Derleyici Hatası C2061
söz dizimi hatası : tanımlayıcı 'tanımlayıcı'
Derleyici, beklenmeyecek bir tanımlayıcı buldu. Kullanmadan önce bunun bildirildiğinden identifier
emin olun.
Başlatıcı parantez içine alınmış olabilir. Bu sorunu önlemek için bildirimciyi parantez içine alın veya bir typedef
yapın.
Derleyici bir ifadeyi sınıf şablonu bağımsız değişkeni olarak algıladığında da bu hataya neden olabilir; aşağıdaki örnekte gösterildiği gibi, derleyiciye bir tür olduğunu söylemek için typename kullanın:
Aşağıdaki örnek C2061 oluşturur:
// 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
}
ile template<A a> class C1{};
ilgili hatayı çözmek için komutunu kullanın template <typename a> class C1 {};
ile using Type1 = T::Type;
ilgili sorunu çözmek için komutunu kullanın using Type1 = typename T::Type;
ile alignof(x)
ilgili sorunu çözmek için bağımsız değişkenini türüyle x
değiştirin. Bu durumda veya int
decltype(x);
Typeid'ye bir örnek adı geçirirseniz C2061 oluşabilir:
// 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
}