は、次のクラスを考えてみましょう:私は次のコードをお持ちの場合の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;
を私はC1にC2を割り当てることができないんです。
また、MyFunction(c2)
を呼び出すだけでコンパイルされません。これは、MyClassがMyInterface1とMyInterface2の両方から派生しているため動作すると予想されます。これは、共有する価値のあるコンパイラのバグ(Visual Studio 2015 Update 3)のようです。誰でもこれを再現できますか?
いいえ、これはコンパイラのバグではありません。 –
これは 'shared_ptr'とは何の関係もありません。これは未処理のポインタでも機能しません。 – tkausl
'MyClass'は' MyInterface1'または 'MyInterface2'でも構いませんが、' MyInterface1'と 'MyInterface2 'の間には関係はありません。 – user4581301