Bagikan melalui


Compiler Error C2061

kesalahan sintaks : pengidentifikasi 'pengidentifikasi'

Komentar

Pengkompilasi menemukan pengidentifikasi di mana pengidentifikasi tidak diharapkan. Pastikan dideklarasikan identifier sebelum Anda menggunakannya.

Penginisialisasi dapat diapit oleh tanda kurung. Untuk menghindari masalah ini, sertakan deklarator dalam tanda kurung atau jadikan sebagai typedef.

Kesalahan ini juga dapat disebabkan ketika pengkompilasi mendeteksi ekspresi sebagai argumen templat kelas; gunakan typename untuk memberi tahu pengkompilasi itu adalah jenis, seperti yang ditunjukkan dalam contoh berikut:

Contoh

Contoh berikut menghasilkan 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
}

Untuk mengatasi kesalahan dengan template<A a> class C1{};, gunakan template <typename a> class C1 {};
Untuk mengatasi masalah dengan using Type1 = T::Type;, gunakan using Type1 = typename T::Type;
Untuk mengatasi masalah dengan alignof(x), ganti argumen dengan jenis x. Dalam hal ini, int atau decltype(x);

C2061 dapat terjadi jika Anda meneruskan nama instans ke 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
}