다음을 통해 공유


컴파일러 경고(수준 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
}