ich zwei Klassen haben, von denen einer, sagen wir, für eine Zeichenfolge, und der andere kann in einen String umgewandelt werden:Mehrdeutige Zuweisungsoperator
class A {
public:
A() {}
A(const A&) {}
A(const char*) {}
A& operator=(const A&) { return *this; }
A& operator=(const char*) { return *this; }
char* c;
};
class B {
public:
operator const A&() const {
return a;
}
operator const char*() const {
return a.c;
}
A a;
};
Nun, wenn ich
B x;
A y = x;
tun Es löst den Kopierkonstruktor aus, der die Daten kompiliert. Aber wenn ich
tunA y;
y = x;
Es beschwert sich über mehrdeutige Zuordnung und kann nicht wählen zwischen =(A&)
und =(char*)
. Warum der Unterschied?
Wahnsinn. Das ist alles was ich über die tiefsten Gruben von C++ sagen kann .... –