2016-03-31 12 views
0

Ich habe ein Problem mit meinem Code und ich weiß nicht, wie ich das lösen könnte. Also, ich habe eine Klasse (zB myClass) und innerhalb einer Funktion, die einen Zeiger auf eine void-Funktion zurückgeben soll, die myClass als Parameter haben. Um den Zeiger auf die Funktion zurückzugeben, muss ich diese Anweisung "typedef void (* fp) (const myClass & Objekt)" vor dem Definieren der Klasse und ihrer Methoden verwenden, aber da der Parameter den Typ MyClass hat, sagt mir der Compiler, dass die Klasse wurde nicht deklariert.Require typedef und Klasse zur gleichen Zeit

("fp getFunction()" erfordert "typedef" und "typedef" erfordert "myClass" definiert. Ich weiß nicht, dass ich mich klar gemacht habe, aber ich werde alle Fragen beantworten, wenn sie sind über den Code.)

EDIT: Wenn ich versuche, "typedef" nach myClass-Deklaration zu setzen, sagt mein Compiler, dass "fp ist kein Typ" (oder so ähnlich).

typedef void(*fp)(const myClass& object); 

class myClass{ 

private: 
    char statement[100]; 
    void (*_pointer)(const myClass& object); 

public: 
    void setStatement(char *sequence){strcpy(statement,sequence);} 
    void setPointer(void (*_pointerToFunction)(const myClass& object)) {_pointer = _pointerToFunction;} 

    fp getFunction() {return _pointer;} 
    void showStatement() {cout << statement << " ";} 
}; 
+0

Sie benötigen einen Forward-Deklaration: http://stackoverflow.com/questions/4926105/what-is-forward-declaration-in-c – vu1p3n0x

Antwort

4

Zukunfts erklären myClass als class:

typedef void(*fp)(const class myClass& object); 
         ^^^^^ 
Verwandte Themen