Ich bekomme diesen Fehler, wenn der erste Parameter keinen Sinn ergibt. Überprüfen Sie, ob Evaluator
als Typ bekannt ist:
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
Um herauszufinden, ob etwas ein Objekt oder Funktionsdeklaration ist, hat der Compiler manchmal die ganze Erklärung zu scannen. Jedes Konstrukt innerhalb der Deklaration, das möglicherweise eine Deklaration bilden könnte, wird als Deklaration betrachtet. Wenn nicht, dann wird jedes derartige Konstrukt als ein Ausdruck angesehen. GCC denkt anscheinend, weil nonsense
kein gültiger Typ ist, es kann keine gültige Parameterdeklaration sein und fällt daher zurück und behandelt die gesamte Deklaration als ein Feld (beachten Sie, dass es zusätzlich error: expected ';' before '(' token
) angibt. Gleiches im lokalen Bereich
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)
Können Sie uns den Code über und unter diesem zeigen? Gab es andere Fehler? – JaredPar