2

私はC++の初心者段階です。基本クラスと派生クラスがあるとします。

class Base{
 ....

}

class Derived:public Base{

 ....
}

これで、次のように 2 つのベクトルができました。いくつかの操作を実行して、基本オブジェクトと派生オブジェクトを作成し、これらのオブジェクトをそれぞれ対応するベクトルにプッシュします。

std::vector<Base*> baseVector
std::vector<Derived*> derivedVector

私は、baseVector の各要素 (オブジェクト) に、派生ベクターの各要素 (オブジェクト) をポイントしたいと考えています。派生オブジェクトからベース オブジェクトにいつでもアクセスできるように、派生ベクター[2] に baseVector[2] へのポインターがあるとします。どうすればいいですか?

4

4 に答える 4

3

あなたが何を意味するのかはあまり明確ではありませんが、正しく理解できれば、Derivedオブジェクトへのポインターを 2 つのベクトルに入れたいと考えています。次の方法で実現できます。

baseVector[2] = derivedVector[2] = new Derived();
于 2013-11-14T18:14:25.053 に答える
0

ベースリストを使用して派生オブジェクトポインターを含めるかどうかを確認してから、問題ありません。ただし、派生リストを使用してベース ポインターを保持することはできません。

のようなものが欲しいかもしれません。

Base * pBase = new Base();
Derived *pDerived_1 = new Derived();
// or
Base *pDerived_2 = (Base *)new Derived();
// this can be anytime casted back
Derived *pDerived_3 = (Derived*)pDerived_2;

// you can also push them into base vector
lstBasePtr.push_back(pBase);
lstBasePtr.push_back(pDerived_1);
lstBasePtr.push_back(pDerived_2);
lstBasePtr.push_back(pDerived_3);
于 2013-11-14T18:28:54.807 に答える