С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Указатель this и виртуальние функции - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вывод дерева, найти ошибку в коде http://www.cyberforum.ru/cpp-beginners/thread1164319.html
Ребятки,выручите,кто может,в общем,нужно,чтобы дерево вывелось,но не получается почему-то,где-то леплю смешную ошибку,программу полдня писал,уже голова не варит...Буду крайне благодарен за помощь...
C++ Как сделать динамический массив объектов? IContainer *C = new myString; Есть такая запись, нужно сделать массив из C. IContainer *C = new myString; такое не работает, есть варианты или это невозможно? Добавлено через 2 минуты... http://www.cyberforum.ru/cpp-beginners/thread1164310.html
C++ Перекодировка из EBCDIC в win1251
Помогите пожалуйста составить прогу перекодировки файла из EBCDIC в win1251
C++ Заменить каждое третье положительное число средним арифметическим отрицательных чисел, вывести в файл
Записать выходной файл, заменив каждое третье положительное число средним арифметическим отрицательных чисел. Дело в том, что я провел небольшой стресс-тест, к примеру: на первом и втором номере я...
C++ Удвоить каждое слово во введённом предложении http://www.cyberforum.ru/cpp-beginners/thread1164295.html
Удвоить каждое слово во введённом предложении. На печать вывести введённую строку и результат её обработки.
C++ Найти количество одинаковых слов в строке #include <iostream> using namespace std; int main() { char str1 = "to be or not to be"; char* leks = strtok(str1, " "); while(leks) // <====================================== { подробнее

Показать сообщение отдельно
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85

Указатель this и виртуальние функции - C++

02.05.2014, 20:01. Просмотров 290. Ответов 7
Метки (Все метки)

Доброго времени суток!
Есть проблема:
Существует два класса: второй наследует первого.
Есть функция, которая выводит название класса к которому принадлежит объект. Вот в этом и проблема: вызывая данную функцию с второго (наследуемого) класса выводится название первого (родительского).
Как сделать так, чтоб все выводилось правильно без переопределения метода?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class SuperClass {
public: 
    virtual std::string getClassName() {
        return typeid(this).name();
    }
}
 
class SubClass : public SuperClass {}
 
int main() {
    SubClass* object = new SubClass();
    cout << object.getClassName(); // выводит "class SuperClass", а должно "class SubClass"
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.