最初のケースでは、MyClassポインタの配列を定義しています。
ケース1:この場合
class MyClass {
public:
std::vector<MyClass *> Container;
};
、はsizeof(コンテナ)は、ベクトルのはsizeof(MyClassの*)(ポインタのサイズ)X長さであろう。ベクトルそのものと同じです。 あなたは...このように第2のケースで
// ChildContainer is a vector
ChildContainer = myInstance->Container[i]->Container;
を変数にアクセスし、あなたは(自分自身も、とにかく、すでにポインタである)クラスインスタンスの配列へのポインタを定義しています。ここで、sizeof(Container)はポインタのサイズになります。ベクトルそのものは、sizeof(MyClass)(インスタンスポインタ!)のベクトル長Xになります。
ケース2:
class MyClass {
public:
std::vector<MyClass> * Container;
};
あなたはこのような変数にアクセスします...
// ChildContainer is a pointer to a vector
ChildContainer = myInstance->(*Container)[i]->Container;
MyClassのは、実際にあった場合は、構造体がによってポインタではありませんので、構造体、アクセスは少し異なる可能性がありますデフォルト。
ケース1:
struct MyClass {
public:
std::vector<MyClass*> Container;
};
使用:
// ChildContainer is a vector
ChildContainer = myInstance.Container[i]->Container;
ケース2:
struct MyClass {
public:
std::vector<MyClass> * Container;
};
使用:
// ChildContainer is a pointer to a vector
ChildContainer = myInstance.(*Container)[i].Container;
まず点のベクトルでありますMyClassに変換します。 2番目は 'MyClass'のインスタンスのベクトルへのポインタです。 – iehrlich
'std :: vector Container;これは' MyClass'要素へのポインタのリストを含むベ... 'std :: vector * Container;'これは 'MyClass'を含むベクトルへのポインタです要素。 –
ZeldaZach
@mike baykoオブジェクトにベクターに何個のポインタを持たせることができますか?たぶん、std :: vector型の静的データメンバーを意味するのでしょうか? –