Je reçois cette erreur lorsque le premier paramètre n'a pas de sens. Vérifiez que Evaluator
est connu comme le type:
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
Pour savoir si quelque chose est une déclaration d'objet ou d'une fonction, le compilateur doit parfois balayer toute la déclaration. Toute construction dans la déclaration qui pourrait éventuellement former une déclaration est considérée comme une déclaration. Si non, alors une telle construction est considérée comme une expression. GCC pense apparemment parce que nonsense
n'est pas un type valide, il ne peut pas être une déclaration de paramètre valide, et retombe donc en traitant la déclaration entière comme un champ (notez qu'il indique en outre error: expected ';' before '(' token
). Même chose dans le champ d'application local
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)
Pouvez-vous nous montrer le code au-dessus et au-dessous? Y avait-il d'autres erreurs? – JaredPar