Suchergebnisse für Anfrage "virtual-inheritance"

2 die antwort

Virtuelle Tabellen und Speicherlayout in mehrfacher virtueller Vererbung

14 die antwort

C ++ kann nicht von Basis A zu abgeleitetem Typ B über virtuelle Basis A konvertieren.

Ich habe drei Klassen: class A {}; class B : virtual public A {}; class C : virtual public A {}; class D: public B, public C {};Versuch einer statischen Umwandlung von A * nach B * Ich erhalte den folgenden Fehler: cannot convert from base A to ...

10 die antwort

C ++ Multiple Virtual Inheritance vs. COM

Das Netz ist überfüllt mit Erklärungen des "gefürchtetes Diamantproblem" [http://en.wikipedia.org/wiki/Diamond_problem]. Genauso wie StackOverflow. Ich glaube, ich verstehe das, aber ich kann dieses Wissen nicht in etwas Ähnliches und doch ...

TOP-Veröffentlichungen

6 die antwort

Virtuelle und nicht virtuelle Vererbung einer Basisklasse mischen

Dies ist der Code: struct Biology { Biology() { cout << "Biology CTOR" << endl; } }; struct Human : Biology { Human() { cout << "Human CTOR" << endl; } }; struct Animal : virtual Biology { Animal() { cout << "Animal CTOR" << endl; } }; struct ...

10 die antwort

Was ist in C ++ eine virtuelle Basisklasse?

Ich will wissen was ein "virtuelle Basisklasse"ist und was es bedeutet. Lassen Sie mich ein Beispiel zeigen: class Foo { public: void DoSomething() { /* ... */ } }; class Bar : public virtual Foo { public: void DoSpecific() { /* ... */ } };

7 die antwort

Wie löst die virtuelle Vererbung die Mehrdeutigkeit des „Diamanten“ (Mehrfachvererbung)?

class A { public: void eat(){ cout<<"A";} }; class B: virtual public A { public: void eat(){ cout<<"B";} }; class C: virtual public A { public: void eat(){ cout<<"C";} }; class D: public B,C { public: void eat(){ cout<<"D";} }; int main(){ A *a = ...

1 die antwort

Entfernen Sie doppelte Einträge aus C ++ 11-Vorlagenargumenten

3 die antwort

Kraft, die virtuell aus einer Klasse stammt

2 die antwort

C ++ Virtual Inheritance Memory Layout

Virtuelle Vererbungsspeicherlayouts Ich versuche zu verstehen, was unter der Haube im Speicher mit virtueller Vererbung und vTables / vPtrs passiert und was nicht. Ich habe zwei Beispiele für Code, den ich geschrieben habe, und verstehe ...

8 die antwort

Aufrufen des überladenen Konstruktors einer virtuellen Basisklasse

Gibt es eine (praktische) Möglichkeit, die normale (virtuelle) Aufrufreihenfolge von Konstruktoren zu umgehen? Beispiel class A { const int i; public: A() : i(0) { cout << "calling A()" << endl; } A(int p) : i(p) { cout << "calling A(int)" << ...