Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
'function': Der Zeiger 'this' kann nicht von 'type1' in 'type2' konvertiert werden.
Bemerkungen
Der Compiler konnte den this Zeiger nicht in type1type2.
Dieser Fehler kann durch Aufrufen einer Nicht-Member-Funktionconst für ein const Objekt verursacht werden. Mögliche Auflösungen:
Entfernen Sie die
constAus der Objektdeklaration.Zur Memberfunktion hinzufügen
const.
Examples
Im folgenden Beispiel wird C2662 generiert:
// C2662.cpp
class C {
public:
void func1();
void func2() const{}
} const c;
int main() {
c.func1(); // C2662
c.func2(); // OK
}
Beim Kompilieren mit /clr können Sie keine Funktion für einen const oder volatile qualifizierten verwalteten Typ aufrufen. Sie können keine Const-Memberfunktion einer verwalteten Klasse deklarieren, sodass Sie keine Methoden für verwaltete Objekte aufrufen können.
// C2662_b.cpp
// compile with: /c /clr
ref struct M {
property M^ Type {
M^ get() { return this; }
}
void operator=(const M %m) {
M ^ prop = m.Type; // C2662
}
};
ref struct N {
property N^ Type {
N^ get() { return this; }
}
void operator=(N % n) {
N ^ prop = n.Type; // OK
}
};
Im folgenden Beispiel wird C2662 generiert:
// C2662_c.cpp
// compile with: /c
// C2662 expected
typedef int ISXVD;
typedef unsigned char BYTE;
class LXBASE {
protected:
BYTE *m_rgb;
};
class LXISXVD:LXBASE {
public:
// Delete the following line to resolve.
ISXVD *PMin() { return (ISXVD *)m_rgb; }
ISXVD *PMin2() const { return (ISXVD *)m_rgb; }; // OK
};
void F(const LXISXVD *plxisxvd, int iDim) {
ISXVD isxvd;
// Delete the following line to resolve.
isxvd = plxisxvd->PMin()[iDim];
isxvd = plxisxvd->PMin2()[iDim];
}