Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Compilerfehler C3066

Fehlermeldung

Es gibt mehrere Möglichkeiten, ein Objekt dieses Typs mit diesen Argumenten aufzurufen
there are multiple ways that an object of this type can be called with these arguments

Der Compiler hat einen mehrdeutigen Funktionsaufruf gefunden, der Surrogate beinhaltet.

Im folgenden Beispiel wird C3066 generiert:

// C3066.cpp
template <class T, class U> void func(T*, U*){}

typedef void (*PF)(const int*, const char*);
typedef void (*PF1)(const int*, volatile char*);

struct A {
   operator PF() const {
      return func;
   }

   operator PF1() {
      return func;
   }

   operator PF1() const  {
      return func;
   }

};

int main() {
   A a;
   int i;
   char c;

   a(&i, &c);   // C3066
   a(&i, (const char *) &c);   // OK
}
Anzeigen: