Форум программистов, компьютерный форум CyberForum.ru

typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Порядковая статистика http://www.cyberforum.ru/cpp-beginners/thread652942.html
http://acm.timus.ru/problem.aspx?space=1&num=1306 Подскажите, пожалуйста, ошибку в алгоритме, не могу найти. #include <iostream> #include <vector> #include <algorithm> using namespace std; int partition(vector<int> &a,int l,int r){ swap(a,a);
C++ undefined reference to 'std::basic Братцы выручайте Сейчас с ума сойду... Но сначала исходники main.cpp #include <iostream> #include <fstream> #include <iomanip> http://www.cyberforum.ru/cpp-beginners/thread652938.html
Вывод string из list C++
Есть некий класс. class human { public: string name; int age; }; int main ()
do while C++
Помогите , пожалуйста . Как сделать проверку на символы ? А то программа начитает зацикливаться , например do { cout <<"height of the fall H = "; cin >> H; } while (H <= 0 || H > 10000);
C++ 3 файла: 1 - хэдер-файл и 2 простых .срр http://www.cyberforum.ru/cpp-beginners/thread652904.html
Всем привет! Помогите плз понять 1 вещь. У меня 3 файла 1 header, 2 - .cpp. В хэдере описание класса с прототипами функций. В 1-м срр-файле описание функций (по прототипам, объявленным в хэдер файле). Во 2-м срр-файле используются функции-методы данного класса.
C++ Декартов лист Помогите реализовать класс. Я новичок и пытаюсь разобраться :) и если кому не сложно, то напишите какие нибудь подсказки по этой задачи) подробнее

Показать сообщение отдельно
RoastedBard
 Аватар для RoastedBard
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 10
16.09.2012, 20:10     typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <iostream>
#include <string>
#include <conio.h>
#include <windows.h>
#include <typeinfo>
 
using namespace std;
 
struct Human
{
    string name;
};
 
    struct Student : Human
    {
        Student()
        {
            name="Студент";
        }
    };
 
    struct Dekan : Human
    {
        Dekan()
        {
            name="Декан";
        }
    };
 
    struct Rektor : Human
    {
        Rektor()
        {
            name="Ректор";
        }
    };
 
int main()
{
    ::SetConsoleCP(::GetACP());
    ::SetConsoleOutputCP(::GetACP());
    int choise;
    Human *h;
    
    cout<<"1)Создать ректора\n";
    cout<<"2)Создать декана\n";
    cout<<"3)Создать студента\n";
    cout<<">Ваш выбор: ";
    cin>>choise;
 
    switch(choise)
    {
    case 1:
        h=new Rektor();
        break;
    case 2:
        h=new Dekan();
        break;
    case 3:
        h=new Student();
        break;
    }
 
    if(typeid(h)==typeid(Rektor))
        cout<<"Вы создали ректора\n";
    if(typeid(h)==typeid(Dekan))
        cout<<"Вы создали декана\n";
    if(typeid(h)==typeid(Student))
        cout<<"Вы создали студента\n";
    
    _getch();
    return 0;
}
Тип переменной h всегда определяет как Human*. Подскажите пожалуйста, как в данном конкретном случае сделать, чтобы типы определялись корректно(т.е если я создал ректора то тип должен быть Rektor и т.д)?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru