2016-03-31 40 views
0

Kodumda bir sorunum var ve bunu nasıl çözebileceğimi bilmiyorum. Yani, bir sınıf (ex: myClass) var ve bir parametre olarak myClass olan bir void işlevinde bir işaretçi döndürmelidir bir işlev içinde. İşaretçiyi işlevde döndürmek için bu deyimi kullanmam gerekir "typedef void (* fp) (const myClass & nesnesi)" sınıfı ve yöntemlerini tanımlamaktan önce, ancak parametre MyClass yazdığı için derleyici bana bu sınıfı söyler. beyan edilmedi.Aynı anda typedef ve sınıf gerektirir

("fp getFunction()" gerektirir "typedef" ve "typedef", "myClass" öğesinin tanımlanmasını gerektirir. Kendimi netleştirdiğimi bilmiyorum, ancak tüm soruları yanıtlayacağım. kod hakkında.)

DÜZENLEME: myClass bildiriminden sonra "typedef" koymaya çalışırsam, derleyicim "fp bir tür değil" (veya bunun gibi bir şey) söyler.

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

Bir ileri beyanı gerekir: http://stackoverflow.com/questions/4926105/what-is-forward-declaration-in-c – vu1p3n0x

cevap

4

İleri-beyan myClassclass bir şekilde:

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