共用方式為


編譯器錯誤 C3535

無法從 'type2' 推算 'type1' 的型別

無法從初始化運算式的型別來推算由 auto 關鍵字所宣告之變數的型別。 例如,如果初始化運算式評估為不是型別的 void,便會發生這個錯誤。

更正這個錯誤

  1. 確定初始化運算式的型別不是 void。

  2. 確定宣告不是主要資料型別 (Fundamental Type) 的指標。 如需詳細資訊,請參閱基本類型 (C++)

  3. 確定當宣告是型別的指標時,初始化運算式為指標型別。

範例

下列範例會產生 C3535 錯誤,因為初始化運算式會評估成 void。

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

下列範例會產生 C3535 錯誤,因為陳述式將變數 x 宣告為所推算型別的指標,但是初始化運算式的型別為 double。 因此,編譯器無法推算變數的型別。

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

下列範例會產生 C3535 錯誤,因為變數 p 宣告為所算斷型別的指標,但是初始化運算式不是指標型別。

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

請參閱

參考

auto 關鍵字

基本類型 (C++)