Bagikan melalui


Compiler Error C3535

tidak dapat menyimpulkan tipe untuk 'type1' dari 'type2'

Jenis variabel yang dideklarasikan oleh auto kata kunci tidak dapat disimpulkan dari jenis ekspresi inisialisasi. Misalnya, kesalahan ini terjadi jika ekspresi inisialisasi mengevaluasi ke void, yang bukan jenis.

Untuk memperbaiki kesalahan ini

  1. Pastikan bahwa jenis ekspresi inisialisasi bukan void.

  2. Pastikan bahwa deklarasi bukan penunjuk ke jenis dasar. Untuk informasi selengkapnya, lihat Jenis Dasar.

  3. Pastikan bahwa jika deklarasi adalah penunjuk ke jenis, ekspresi inisialisasi adalah jenis penunjuk.

Contoh

Contoh berikut menghasilkan C3535 karena ekspresi inisialisasi mengevaluasi ke void.

// C3535a.cpp
// Compile with /Zc:auto
void f(){}
int main()
{
   auto x = f();   //C3535
   return 0;
}

Contoh berikut menghasilkan C3535 karena pernyataan mendeklarasikan variabel x sebagai penunjuk ke jenis yang disimpulkan, tetapi jenis ekspresi inisialisasi ganda. Akibatnya, pengkompilasi tidak dapat menyimpulkan jenis variabel.

// C3535b.cpp
// Compile with /Zc:auto
int main()
{
   auto* x = 123.0;   // C3535
   return 0;
}

Contoh berikut menghasilkan C3535 karena variabel p mendeklarasikan penunjuk ke jenis yang disimpulkan, tetapi ekspresi inisialisasi bukan jenis penunjuk.

// C3535c.cpp
// Compile with /Zc:auto
class A { };
A x;
auto *p = x;  // C3535

Baca juga

kata kunci otomatis
Jenis Dasar