Betrachten Sie die folgenden Klassen:shared_ptr mit mehreren Schnittstellen
class MyInterface1 {
...
};
class MyInterface2 {
...
};
class MyClass : public MyInterface1, public MyInterface2 {
...
};
Wenn ich den folgenden Code haben:
void MyFunction(shared_ptr<MyInterface1>& out); // returns a make_shared<MyClass>
shared_ptr<MyInterface1> c1;
shared_ptr<MyInterface2> c2;
MyFunction(c1);
c2 = c1;
Ich bin nicht in der Lage c2 c1 zuzuordnen.
Zusätzlich wird es auch nicht kompilieren, wenn ich nur MyFunction(c2)
aufrufen, was ich erwarten würde zu arbeiten, da MyClass von MyInterface1 und MyInterface2 abgeleitet ist. Dies scheint ein Compiler-Fehler (Visual Studio 2015 Update 3) zu sein, der sich zu teilen lohnt. Kann das jemand reproduzieren?
Nein, das ist kein Compilerfehler. –
Das hat nichts mit 'shared_ptr' zu tun, das funktioniert auch nicht mit rohen Zeigern. – tkausl
'MyClass' kann ein' MyInterface1' oder ein 'MyInterface2' sein, aber es gibt keine Beziehung zwischen' MyInterface1' und 'MyInterface2. – user4581301