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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Конвертация строки в массив символов http://www.cyberforum.ru/cpp-beginners/thread1223037.html
Что тут не так?( getTextFromFile - считывает с файла сроку. Как переконвертировать строку что бы можно было установить в EDIT? string tmp = getTextFromFile("index.html"); TCHAR buf; mbstowcs(buf, (char*)&tmp, 255); SetWindowText(textArea, buf);
C++ MFC в статической библиотеке; на сторонних ПК, не имеющих этих dll, программа не запускается Всем привет! Есть код, который редактирует реестр: Код: #include <Windows.h> int WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { char* keyPath = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon"; 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 *, int ); //constructor by number of elements String( const char ); //constructor by string //overload char& operator (int);
Расположить вначале отрицательные, а затем положительные элементы в массиве C++
Помогите пожалуйста. не знаю как сделать его без помощи доп массива. Дан массив целых чисел A(n), n<=400. Разработать программу которая превращает этот массив так, чтобы в начале размещались все отрицательные, а потом все положительные элементы в порядке их наступления в изначальном массиве. Дополнительный массив не использовать.
C++ Как правильно объявить структуру http://www.cyberforum.ru/cpp-beginners/thread1223008.html
Всем доброго времени суток.Есть задача:Составить программу формирования данных об успеваемости студентов по дисциплине: фамилия И.О., 5 оценок по контрольным мероприятиям. Организовать вычисление итоговых оценок: если студент набрал 80% и более от максимально возможного балла – оценка 5, от 60% до 79% – 4; от 40% до 59% -3, менее 40% - 2 Необходимо использовать структуры. Задумка такая: Задаем...
C++ Начертить 100 окружностей случайного диаметра и цвета Написать программу, которая вычерчивает на экране узор из 100 окружностей случайного диаметра и цвета. подробнее

Показать сообщение отдельно
TheChosenOne
13 / 13 / 1
Регистрация: 13.09.2013
Сообщений: 113
05.07.2014, 18:26     Почему при виртуальном наследовании компилятор не знает о иерархии?
Рассмотрим пример:

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 за информацией о типе)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru