編譯器警告 (層級 1) C4383
'instance_dereference_operator':當使用者定義 'operator' 運算符存在時,取值句柄的意義可能會變更;將運算子寫入為靜態函式,以明確說明操作數
當您在 Managed 型別中新增取值運算子的使用者定義實例覆寫時,可能會覆寫類型取值運算符傳回句柄物件的能力。 請考慮撰寫靜態的使用者定義取值運算符。
如需詳細資訊,請參閱 處理物件運算元 (^) 和 追蹤參考運算符。
此外,實例運算符無法透過參考的元數據提供給其他語言編譯程式使用。 如需詳細資訊,請參閱使用者定義運算元(C++/CLI)。
範例
下列範例會產生 C4383。
// C4383.cpp
// compile with: /clr /W1
ref struct S {
int operator*() { return 0; } // C4383
};
ref struct T {
static int operator*(T%) { return 0; }
};
int main() {
S s;
S^ pS = %s;
T t;
T^ pT = %t;
T% rT = *pT;
}