Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
erreur de syntaxe : identificateur 'identificateur'
Remarques
Le compilateur a trouvé un identificateur où il n’était pas attendu. Assurez-vous qu’il identifier est déclaré avant de l’utiliser.
Un initialiseur peut être placé entre parenthèses. Pour éviter ce problème, placez le déclarateur entre parenthèses ou faites-en un typedef.
Cette erreur peut également être provoquée lorsque le compilateur détecte une expression en tant qu’argument de modèle de classe ; utilisez typename pour indiquer au compilateur qu’il s’agit d’un type, comme illustré dans l’exemple suivant :
Exemples
L’exemple suivant génère l’erreur C2061 :
// C2061.cpp
// compile with: /std:c++17
template <A a> // C2061
class C1 {};
template <typename A a> // ok
class C2 {};
template <typename T>
class C3
{
// Both are valid since C++20
using Type1 = T::Type; // C2061
using Type2 = typename T::Type; // OK
};
int main()
{
int x;
unsigned a1 = alignof(x); // C2061
unsigned a2 = alignof(int); // OK
unsigned a3 = alignof(decltype(x)); // OK
}
Pour résoudre l’erreur avec template<A a> class C1{};, utilisez template <typename a> class C1 {};
Pour résoudre le problème avec using Type1 = T::Type;, utilisez using Type1 = typename T::Type;
Pour résoudre le problème avec alignof(x), remplacez l’argument par le type de x. Dans ce cas, int ou decltype(x);
C2061 peut se produire si vous passez un nom d’instance à typeid :
// C2061b.cpp
// compile with: /clr
ref struct G
{
int i;
};
int main()
{
G ^pG = gcnew G;
System::Type ^ pType = typeid<pG>; // C2061
System::Type ^ pType2 = typeid<G>; // OK
}