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

Почему при виртуальном наследовании компилятор не знает о иерархии? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конвертация строки в массив символов http://www.cyberforum.ru/cpp-beginners/thread1223037.html
Что тут не так?( getTextFromFile - считывает с файла сроку. Как переконвертировать строку что бы можно было установить в EDIT? string tmp = getTextFromFile("index.html"); TCHAR buf; mbstowcs(buf,...
C++ MFC в статической библиотеке; на сторонних ПК, не имеющих этих dll, программа не запускается Всем привет! Есть код, который редактирует реестр: Код: #include <Windows.h> int WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { char* keyPath = "SOFTWARE\\Microsoft\\Windows... http://www.cyberforum.ru/cpp-beginners/thread1223033.html
C++ Перегрузка оператора >> для пользовательского класса String
Объявление класса: class String { public: //constructor String( const char * = NULL ); //default constructor String( const String& ); //constructor by reference String( const char...
Расположить вначале отрицательные, а затем положительные элементы в массиве C++
Помогите пожалуйста. не знаю как сделать его без помощи доп массива. Дан массив целых чисел A(n), n<=400. Разработать программу которая превращает этот массив так, чтобы в начале размещались все...
C++ Как правильно объявить структуру http://www.cyberforum.ru/cpp-beginners/thread1223008.html
Всем доброго времени суток.Есть задача:Составить программу формирования данных об успеваемости студентов по дисциплине: фамилия И.О., 5 оценок по контрольным мероприятиям. Организовать вычисление...
C++ Начертить 100 окружностей случайного диаметра и цвета Написать программу, которая вычерчивает на экране узор из 100 окружностей случайного диаметра и цвета. подробнее

Показать сообщение отдельно
TheChosenOne
13 / 13 / 1
Регистрация: 13.09.2013
Сообщений: 113

Почему при виртуальном наследовании компилятор не знает о иерархии? - C++

05.07.2014, 18:26. Просмотров 231. Ответов 1
Метки (Все метки)

Рассмотрим пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
class Base
{ 
   virtual void foo()=0;
};
 
class Derv :public Base
{
   foo(){}
};
 //Тут компилятор знает о всей иерархии можно осуществлять преобразования:
Base* bp = new Derv;
Derv* dp = static_cast<Derv*>(bp); //Все ок
Но как только режим наследования становится public virtual, компилятор уже "не знает" ничего о том что Base явл. базовым классом для Derv, и необходим dynamic_cast (RTTI mechanism) . Сообсно вопрос: Почему компилятор вдруг "перестает знать" о иерархии? (Раньше ведь знал -> информация где-то хранилась и не было необходимости лезть в vtable за информацией о типе)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru