共用方式為


編譯器警告 (層級 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;
}