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

Информация о типе - C++

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.05.2010, 06:55     Информация о типе #1
Есть ли в сях возможность прочитать класс объекта в строку, заканчивающуюся нулём? Известно, что базовый класс имеет виртуальные члены. Не известно, является ли фактический класс базовым. Перегрузка для этой цели специальных членов не желательна.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2010, 06:55     Информация о типе
Посмотрите здесь:

Пояснить про const в возвращаемом типе функции C++
Тривиальная ошибка при типе string C++
C++ Ошибка в типе переменной
C++ Ошибка в возвращаемом типе
C++ Ошибка в типе данных
Посчитать максимальное количество символов в вещественном типе C++
C++ Написать программу- вводная информация в файле in.txt, выходная информация в out.txt
C++ Собственный тип не может быть вложенным в управляемом типе
C++ Где можно узнать о типе HDC?
C++ Что, если заменить точку на запятую в типе double
C++ Ошибка в типе переменных
Битовые операции на длинном типе C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
06.05.2010, 09:18     Информация о типе #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
int main()
{
    MyClass p;
    cout << typeid(MyClass).name() << endl;
    return 0;
}
?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
06.05.2010, 09:34  [ТС]     Информация о типе #3
Спасибо, но мне именно в sz, а не в поток. Если переписать так:
C++
1
2
3
MyClass *p=&o;
char *c;
c=typeid(MyClass).name(&p);
то будет ли в c та самая строка?

Добавлено через 2 минуты
Если p указывает на объект базового класса MyClass? А если на объект производного производный от него класса? На объект дальнего потомка?
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,316
06.05.2010, 10:35     Информация о типе #4
Цитата Сообщение от taras atavin Посмотреть сообщение
Известно, что базовый класс имеет виртуальные члены. Не известно, является ли фактический класс базовым. Перегрузка для этой цели специальных членов не желательна.
В соответствии с принципом подстановки Лисков (LSP), любой объект производного класса "является" одновременно и объектом базового класса и может без ограничений использоваться во всех случаях, когда требуется объект (или, чаще, указатель на объект) базового класса.
Roma_F
331 / 246 / 5
Регистрация: 13.12.2009
Сообщений: 589
06.05.2010, 21:39     Информация о типе #5
Цитата Сообщение от Roma_F Посмотреть сообщение
cout << typeid(MyClass).name() << endl;
утром торопился

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
class AClass
{
    public:
        virtual ~AClass() {};
};
 
class BClass : AClass
{
    public:
        ~BClass() {};
};
 
int main()
{
    AClass a;
    BClass b;
    AClass *a_ptr = new AClass();
    BClass *b_ptr = new BClass();
 
    const char *ca = typeid(a).name();
    const char *cb = typeid(b).name();
    const char *ca_ptr = typeid(a_ptr).name();
    const char *cb_ptr = typeid(b_ptr).name();
    cout << ca << endl;
    cout << cb << endl;
    cout << ca_ptr << endl;
    cout << cb_ptr << endl;
 
    delete a_ptr;
    delete b_ptr;
    return 0;
}
 
--------- output ---------
6AClass
6BClass
P6AClass
P6BClass
------------------
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.05.2010, 05:15  [ТС]     Информация о типе #6
Цитата Сообщение от CheshireCat Посмотреть сообщение
В соответствии с принципом подстановки Лисков (LSP), любой объект производного класса "является" одновременно и объектом базового класса и может без ограничений использоваться во всех случаях, когда требуется объект (или, чаще, указатель на объект) базового класса.
. Это мне известно. Но обратное не верно: указатель на базовый класс нельзя использовать вместо производного. Потомок же может иметь методы, которых базовый класс не имеет. Тогда информация о фактическом типе могла бы быть использована для того, чтоб решить, можно ли вызывать дополнительные методы. Но в данном случае она нужна и не для этого. Нужна имено sz с именем фактического класса.
Yandex
Объявления
07.05.2010, 05:15     Информация о типе
Ответ Создать тему
Опции темы

Текущее время: 20:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru