Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
syntaxisfout: ontbrekend 'token' vóór id 'id'
Opmerkingen
De compiler verwachtte token maar vond identifier. Mogelijke oorzaken:
Spel- of hoofdlettergebruiksfout.
Typeaanduiding ontbreekt in de declaratie van de id.
Deze fout kan worden veroorzaakt door een typografische fout. Fout C2065 gaat meestal vooraf aan deze fout.
Voorbeelden
In het volgende voorbeeld wordt C2146 gegenereerd.
// C2146.cpp
class CDeclaredClass {};
class CMyClass {
CUndeclared m_myClass; // C2146
CDeclaredClass m_myClass2; // OK
};
int main() {
int x;
int t x; // C2146 : missing semicolon before 'x'
}
Deze fout kan ook worden gegenereerd als gevolg van het werk aan compilerconformiteit dat is uitgevoerd voor Visual Studio .NET 2003: ontbrekend trefwoord typename.
Het volgende voorbeeld compileert in Visual Studio .NET 2002, maar mislukt in Visual Studio .NET 2003:
// C2146b.cpp
// compile with: /c
template <typename T>
struct X {
struct Y {
int i;
};
Y memFunc();
};
template <typename T>
X<T>::Y func() { } // C2146
// OK
template <typename T>
typename X<T>::Y func() { }
nl-NL: U ziet deze fout ook als gevolg van het werk aan compilerconformiteit dat is uitgevoerd voor Visual Studio .NET 2003: expliciete specialisaties kunnen geen sjabloonparameters meer vinden in de primaire sjabloon.
Het gebruik van T van de primaire sjabloon is niet toegestaan in de expliciete specialisatie. Voor een geldige code in Visual Studio .NET 2003 en Visual Studio .NET vervangt u alle exemplaren van de sjabloonparameter in de specialisatie door het expliciet gespecialiseerde type.
Het volgende voorbeeld compileert in Visual Studio .NET, maar mislukt in Visual Studio .NET 2003:
// C2146_c.cpp
// compile with: /c
template <class T>
struct S;
template <>
struct S<int> {
T m_t; // C2146
int m_t2; // OK
};