共用方式為


編譯器錯誤 C3535

無法推算 'type1' (來自 'type2') 的類型

關鍵詞所 auto 宣告的變數類型無法從初始化表達式的類型推斷。 例如,如果初始化表達式評估為 void,而不是類型,就會發生此錯誤。

更正這個錯誤

  1. 請確定初始化表示式的類型不是 void

  2. 請確定宣告不是基本類型的指標。 如需詳細資訊,請參閱 基本類型

  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 關鍵字
基本類型