Aracılığıyla paylaş


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 typedefyapı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 xdeğiştirin. Bu durumda veya intdecltype(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
}