Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
'function' : kan inte konvertera 'this'-pekaren från 'type1' till 'type2'
Anmärkningar
Kompilatorn kunde inte konvertera pekaren this från type1 till type2.
Det här felet kan orsakas av att en funktion som inteconst är medlem anropas på ett const objekt. Möjliga lösningar:
constTa bort från objektdeklarationen.Lägg till
consti medlemsfunktionen.
Examples
I följande exempel genereras C2662:
// C2662.cpp
class C {
public:
void func1();
void func2() const{}
} const c;
int main() {
c.func1(); // C2662
c.func2(); // OK
}
När du kompilerar med /clr kan du inte anropa en funktion på en const eller volatile kvalificerad hanterad typ. Du kan inte deklarera en const member-funktion i en hanterad klass, så du kan inte anropa metoder för const-hanterade objekt.
// 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
}
};
I följande exempel genereras C2662:
// 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];
}