2016-03-31 4 views
0

私のコードに問題があり、どのように解決できるかわかりません。だから、私はクラス(ex:myClass)とmyClassをパラメータとして持つvoid関数でポインタを返さなければならない関数の中にあります。関数でポインタを返すには、クラスとそのメソッドを定義する前にこのステートメント "typedef void(* fp)(const myClass &オブジェクト)を使用する必要がありますが、パラメータはMyClass型なので、クラス宣言されていない。同時にtypedefとクラスを要求します

( "fp getFunction()"には "typedef"が必要であり、 "typedef"には "myClass"が定義されている必要がありますが、わかりません。コードについて。

EDIT:myClass宣言の後に "typedef"を入れようとすると、私のコンパイラは "fpは型"(またはそのようなもの)ではないことを伝えます。

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

あなたは前方宣言が必要になります。http://stackoverflow.com/questions/4926105/what-is-forward-declaration-in-c – vu1p3n0x

答えて

4

フォワード-宣言myClassclassとして:

typedef void(*fp)(const class myClass& object); 
         ^^^^^ 
関連する問題