私は、Java の荒野で多くの時間を過ごした後、C++ にやや慣れていません。
データ クラス A と B と、Container と呼ぶコンテナー クラスがあるとします。
class A
{
public:
virtual void foo()
{
cout << "I am an A" << endl;
}
};
class B : public A
{
public:
void foo()
{
cout << "I am a B" << endl;
}
};
template <class T> class Container
{
public:
T *_t;
Container(T *t)
{
_t = t;
}
};
私が望むものに相当するJavaは、次のようになります
B b = new B();
Container<? extends A> aContainer = new Container<B>(b);
これは C++ でどのように行うべきですか? これも正統ですか?
次のコードでは、コンパイル エラーが発生します。
B *b = new B();
Container<A> *aContainer = new aContainer<B>(b);
これまでのところ、Google は「? extends」に相当するものを見つけるのに役に立ちませんでした。
== 編集 ==
解決策は、Isaac Drachman が以下で説明しているように、「? extends」が不要になるようにコードを書き直すことでした。