Compilerwarnung (Stufe 1) C4928

Aktualisiert: November 2007

Fehlermeldung

Unzulässige Kopierinitialisierung. Es wurden mehrere benutzerdefinierte Konvertierungen implizit übernommen.
illegal copy-initialization; more than one user-defined conversion has been implicitly applied

Es wurde mehr als eine benutzerdefinierte Konvertierungsroutine gefunden. Der Compiler hat den Code in all diesen Routinen ausgeführt.

Diese Warnung ist standardmäßig deaktiviert. Weitere Informationen finden Sie unter Standardmäßig deaktivierte Compilerwarnungen.

Im folgenden Beispiel wird C4928 generiert:

// C4928.cpp
// compile with: /W1
#pragma warning(default: 4928)

struct I
{
};

struct I1 : I
{
};

struct I2 : I
{
};

template <class T>
struct Ptr
{
   operator T*()
   {
      return 0;
   }

   Ptr()
   {
   }

   Ptr(I*)
   {
   }
};

int main()
{
   Ptr<I1> p1;
   Ptr<I2> p2 = p1;   // C4928
   // try one of the following two lines to resolve this error
   // Ptr<I2> p2(p1);
   // Ptr<I2> p2 = (I1*) p1;
}