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: identifier 'identifier'
Opmerkingen
De compiler heeft een id gevonden waar deze niet werd verwacht. Zorg ervoor dat identifier is gedeclareerd voordat u het gebruikt.
Een initialisatiefunctie kan tussen haakjes staan. Om dit probleem te voorkomen, plaatst u de declaratie tussen haakjes of maakt u het een typedef.
Deze fout kan ook worden veroorzaakt wanneer de compiler een expressie detecteert als een klassesjabloonargument; gebruik de typenaam om de compiler aan te geven dat het een type is, zoals wordt weergegeven in het volgende voorbeeld:
Voorbeelden
In het volgende voorbeeld wordt C2061 gegenereerd:
// 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
}
Als u de fout wilt oplossen met template<A a> class C1{};, gebruikt u template <typename a> class C1 {};
Gebruik using Type1 = typename T::Type; om het probleem met using Type1 = T::Type; op te lossen.
Om het probleem met alignof(x) op te lossen, vervang het argument door het type van x. In dit geval, int of decltype(x);
C2061 kan optreden als u een exemplaarnaam doorgeeft aan 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
}