Bu parametre, ilk parametre anlam ifade etmediğinde anladım. Evaluator
türü olarak biliniyor kontrol edin:
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
şey bir nesne veya işlev bildirimi olup olmadığını öğrenmek için, derleyici bazen bütün deklarasyon taramak zorundadır. Beyannamede olabilecek ve muhtemelen bir deklarasyon oluşturabilecek herhangi bir yapı bir deklarasyon olarak kabul edilir. Eğer değilse, o zaman böyle bir yapı bir ifade olarak alınır. GCC, nonsense
'un geçerli bir tür olmadığından geçerli olduğunu düşünüyor, geçerli bir parametre bildirimi olamaz ve bu nedenle tüm bildirimi bir alan olarak işleme koymaya geri düşer (ek olarak, error: expected ';' before '(' token
numaralı ekte belirtin). Yerel olarak aynı şey
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)
Bize bunun altında ve altında kodu gösterebilir misiniz? Başka bir hata var mıydı. – JaredPar