2016-08-02 38 views
1

私は2クラス定義C++不完全なクラス型のポインタ

class Foo 
{ 
public: 
    int * GetPtr(){ 
     return Obj; 
    } 

    int * Obj; 
} 

class Bar 
{ 
public: 
    ... 

    std::vector<Foo> FooVector; 
} 

を持ち、同じソースファイル内に、私はこの機能これをコンパイルしようとすると

void DoSomething() 
{ 
    Bar* barVar = CreateBar(); // Returns pointer to class object 
    Foo* fooVar = &barVar->FooVector[0]; 

    if (fooVar->GetPtr()) // Error here 
     ... 
} 

を持つソースファイルで、私はエラーを取得します"不完全なクラス型へのポインタは許可されていません"が、クラスはその上に数行定義されています。

+0

正確なエラーメッセージを貼り付けてください。 'Foo * fooVar =&barVar-> FooVector [0]; 'が間違っていれば、' Foo * fooVar = bar &&!barVar-> FooVector.empty()? &barVar-> FooVector [0]:nullptr; '。 'class'の後にセミコロンを入れます。実際のコードを投稿してください。 –

+0

[mvce](http://stackoverflow.com/help/mcve)を作成する過程で、あなた自身が問題を解決する可能性がありますが、少なくともあなたが援助する必要のある最小限のものを持っていれば、 – kfsone

+0

'Obj'は本当に' int * '型ですか? –

答えて

0

私はクラスを適切に実装することでこれを解決しました。

関連する問題