templates und Polymorphie?
-
class Base {}; class Derived : public Base {}; void foo(shared_ptr<Base> f); int main() { shared_ptr<Derived> bar(new Derived()); foo(bar); }
error C2664: 'foo': Konvertierung des Parameters 1 von 'shared_ptr<T>' in 'shared_ptr<T>' nicht möglich
with
[
T=Derived
]
and
[
T=Base
]
Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutigWas tun?
-
sorry, die Klassenstruktur muss so lauten:
class Base {}; class Base2 {}; class Derived : public Base, public Base2 {};
d.h. das Problem ist die Mehrfachvererbung ("Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig").
Was kann man tun?
-
ist trotzdem noch die gleiche fehlermeldung
-
ja
-
in main muss es heißen
shared_ptr<Base> bar(...);
-
danke