Bagikan melalui


Compiler Warning (level 1) C4358

'operator': jenis pengembalian delegasi gabungan tidak 'batal'; nilai yang dikembalikan tidak ditentukan

Dua delegasi digabungkan dan nilai yang dikembalikan tidak batal. Jika dua delegasi dengan nilai pengembalian yang tidak batal digabungkan, pengompilasi tidak akan dapat melakukan penugasan yang tepat jika nilai pengembalian delegasi digunakan.

Sampel berikut menghasilkan 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
}