編譯器錯誤 C3535
無法推算 'type1' (來自 'type2') 的類型
關鍵詞所 auto
宣告的變數類型無法從初始化表達式的類型推斷。 例如,如果初始化表達式評估為 void
,而不是類型,就會發生此錯誤。
更正這個錯誤
請確定初始化表示式的類型不是
void
。請確定宣告不是基本類型的指標。 如需詳細資訊,請參閱 基本類型。
確定如果宣告是型別的指標,初始化表達式就是指標類型。
範例
下列範例會產生 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