Рассмотрим следующие классы:shared_ptr с несколькими интерфейсами
class MyInterface1 {
...
};
class MyInterface2 {
...
};
class MyClass : public MyInterface1, public MyInterface2 {
...
};
Если у меня есть следующий код:
void MyFunction(shared_ptr<MyInterface1>& out); // returns a make_shared<MyClass>
shared_ptr<MyInterface1> c1;
shared_ptr<MyInterface2> c2;
MyFunction(c1);
c2 = c1;
Я не могу назначить c2 для c1.
Кроме того, он также не будет компилироваться, если я просто позвоню MyFunction(c2)
, что я ожидал бы работать, так как MyClass происходит от MyInterface1 и MyInterface2. Это похоже на ошибку компилятора (обновление Visual Studio 2015 Update 3), которая может стоить обмена. Может ли кто-нибудь воспроизвести это?
Нет, это не ошибка компилятора. –
Это не имеет никакого отношения к 'shared_ptr', это также не работает с необработанными указателями. – tkausl
'MyClass' может быть' MyInterface1' или 'MyInterface2', но между MyInterface1 и MyInterface2 нет никакой связи. – user4581301