2016-08-02 14 views
1

In einer Quelldatei Ich habe 2 KlassendefinitionenC++ Unvollständige Klassentyp Zeiger

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

    int * Obj; 
} 

class Bar 
{ 
public: 
    ... 

    std::vector<Foo> FooVector; 
} 

Und in derselben Quelldatei Ich habe diese Funktion

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

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

dies kompilieren Der Versuch, erhalte ich die Fehler "Zeiger auf unvollständige Klassenart nicht erlaubt", aber die Klasse ist ein paar Zeilen darüber definiert.

+0

Bitte genaue Fehlermeldung einfügen. 'Foo * fooVar = & barVar-> FooVector [0]; 'ist falsch, benutze' Foo * fooVar = bar &&! barVar-> FooVector.empty()? & barVar-> FooVector [0]: nullptr; '. Setzen Sie Semikolons nach 'class'. Post echten Code. –

+0

Bei der Erstellung eines [mvce] (http://stackoverflow.com/help/mcve) würden Sie wahrscheinlich das Problem selbst lösen, aber wenn Sie nicht zumindest das absolute Minimum haben würden, müssten wir Ihnen helfen. – kfsone

+0

Ist 'Obj' wirklich' int * 'Typ? –

Antwort

0

Ich habe dies behoben, indem Sie die Klassen ordnungsgemäß implementieren.