Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
errore di sintassi: mancante 'token' prima dell'identificatore 'identifier'
Osservazioni:
Previsto e trovato token invece il compilatoreidentifier. Possibili cause:
Errore di ortografia o maiuscola.
Identificatore di tipo mancante nella dichiarazione dell'identificatore.
Questo errore può essere causato da un errore tipografico. L'errore C2065 precede in genere questo errore.
Esempi
L'esempio seguente genera l'errore C2146.
// 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'
}
Questo errore può essere generato anche in seguito a operazioni di conformità del compilatore eseguite per Visual Studio .NET 2003: parola chiave mancante typename .
L'esempio seguente viene compilato in Visual Studio .NET 2002 ma avrà esito negativo 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() { }
Questo errore verrà visualizzato anche in seguito al lavoro di conformità del compilatore eseguito per Visual Studio .NET 2003: le specializzazioni esplicite non trovano più i parametri del modello dal modello primario.
L'uso di T dal modello primario non è consentito nella specializzazione esplicita. Affinché il codice sia valido in Visual Studio .NET 2003 e Visual Studio .NET, sostituire tutte le istanze del parametro modello nella specializzazione con il tipo specializzato in modo esplicito.
L'esempio seguente viene compilato in Visual Studio .NET ma avrà esito negativo 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
};