Viene visualizzato questo errore quando il primo parametro non ha senso. Controllare che Evaluator
è conosciuto come tipo:
struct A {
virtual void* b(nonsense*, string*);
};
=> error: 'b' declared as a 'virtual' field
struct A {
virtual void* b(string*, nonsense*);
};
=> error: 'nonsense' has not been declared
per scoprire se qualcosa è una dichiarazione di oggetto o di una funzione, il compilatore ha a volte per la scansione di tutta la dichiarazione. Qualsiasi costrutto all'interno della dichiarazione che potrebbe formare una dichiarazione è considerato una dichiarazione. Altrimenti, qualsiasi costruzione di questo tipo è considerata un'espressione. Apparentemente GCC pensa perché nonsense
non è un tipo valido, non può essere una dichiarazione di parametro valida e quindi ricade sull'intera dichiarazione come un campo (si noti che si dice inoltre error: expected ';' before '(' token
). Stessa cosa in ambito locale
int main() {
int a;
// "nonsense * a" not treated as declaration
void f(nonsense*a);
}
=> error: variable or field 'f' declared void
int main() {
// "nonsense * a" treated as parameter declaration
typedef int nonsense;
void f(nonsense*a);
}
=> (compiles successfully)
fonte
2009-05-20 19:09:16
Puoi mostrarci il codice sopra e sotto? Ci sono stati altri errori. – JaredPar