4
голосов
2ответов
925 просмотров

Virtual inheritance - gcc vs. vc++

I have a problem with Visual Studio 2008 concerning virtual inheritance. Consider the following example: #include<iostream> class Print { public: Print (const char * name) { std::cout << name << std::endl; } }; class Base : public virtual Print { pub...

1
голосов
4ответов
134 просмотров

virtual method not seen in implementation

i am currently working on a C++ project where i have an abstract interface that is implemented later on. The interface also has a implemented method which my implementation doesn't override. My problem is that when using my implementation, the compiler(MSVC) doesn't see the interface method. What...

13
голосов
7ответов
17892 просмотров

final class in c++

class Temp { private: ~Temp() {} friend class Final; }; class Final : virtual public Temp { public: void fun() { cout<<"In base"; } }; class Derived : public Final { }; void main() { Derived obj; obj.fun(); } The above code tries to achieve non-i...

7
голосов
4ответов
8995 просмотров

Object layout in case of virtual functions and multiple inheritance

I was recently asked in an interview about object layout with virtual functions and multiple inheritance involved. I explained it in context of how it is implemented without multiple inheritance involved (i.e. how the compiler generated the virtual table, insert a secret pointer to the virtual ta...

5
голосов
2ответов
423 просмотров

Asymmetric virtual Inheritance diamond in C++

So I have this idea and I think it's basically impossible to implement in C++... but I want to ask. I read through chapter 15 of Stroustrup and didn't get my answer, and I don't think the billion other questions about inheritance diamonds answer this one, so I'm asking here. The question is, wha...

5
голосов
4ответов
1085 просмотров

Несовместимы ли реализации виртуального наследования C ++ в разных компиляторах?

У меня есть такая иерархия общедоступных интерфейсов: struct ISwitchable { /* Obtain pointer to another implemented interface of the same instance. */ virtual int switch(unsigned int interfaceId, void** pInstance) = 0; }; struct IFoo : public ISwitchable { /* Methods */ }; struct IBar...

2
голосов
1ответов
3681 просмотров

Переопределенная виртуальная функция не вызывается

У меня странная проблема в моем проекте. У меня есть класс, который наследуется от базового класса (который снова наследуется от другого базового класса) и переопределяет функцию. Однако, когда эта функция вызывается, она никогда не вызывает замещающую функцию, а вызывает базовую функцию. Одн...

6
голосов
5ответов
2624 просмотров

Множественное виртуальное наследование C ++ против COM

Сеть переполнена объяснениями «ужасной проблемы с бриллиантами» . Как и StackOverflow. Я думаю, что понимаю это, но я не могу преобразовать эти знания в понимание чего-то похожего, но отличающегося. Мой вопрос начинается с чистого вопроса C ++, но ответ вполне может перейти к особенностям MS...

411
голосов
11ответов
308133 просмотров

Что такое виртуальный базовый класс в C ++?

Я хочу знать, что такое « виртуальный базовый класс » и что он означает. Позвольте мне показать пример: class Foo { public: void DoSomething() { /* ... */ } }; class Bar : public virtual Foo { public: void DoSpecific() { /* ... */ } };