共用方式為


編譯器警告 (層級 1) C4358

'operator': 合併委派的傳回類型不是 'void';傳回的值未定義

已合併兩個委派,且傳回值不是 void。 如果結合具有非 void 傳回值的兩個委派,則如果使用委派的傳回值,編譯器將無法執行適當的指派。

下列範例會產生 C4358:

// C4358.cpp
// compile with: /clr /W1
delegate int D();
delegate void E();

ref class X {
   int i;
public:
   X(int ii) : i(ii) {}
   int f() {
      return i;
   }
};

ref class Y {
   int i;
public:
   Y() {}
   void g() {}
};

int main() {
   D^ d = gcnew D(gcnew X(1), &X::f);
   D^ d2 = gcnew D(gcnew X(2), &X::f);

   d += d2;   // C4358
   int j = d();   // return value indeterminate

   E^ e = gcnew E(gcnew Y, &Y::g);
   E^ e2 = gcnew E(gcnew Y, &Y::g);
   e += e2;   // OK
}