Ich möchte ein Objekt einer anderen Klasse einen Zeiger durch den Konstruktor einer Klasse speichern. Was ist der richtige Weg?ungültige Konvertierung von ‚const Typ *‘ auf ‚Typ *‘
Wenn ich MyClass1* ptr
mit const MyClass1* ptr
ersetze gibt es keinen Fehler, aber in diesem Fall denke ich, dass ich ptr
nicht mehr ändern kann. Was ist der richtige Weg, um das zu erreichen, was ich will?
example.cpp
class MyClass1{
public:
int a;
int b;
};
class MyClass2{
MyClass1* ptr;
public:
MyClass2(const MyClass1& obj){ptr = &obj;};
};
int main(int argc, char* argv[]){
MyClass1 object1;
object1.a = object1.b = 0;
MyClass2 object2(object1);
return 0;
}
Kompilieren es durch g++ -o example example.cpp
geben Sie mir diesen Fehler
example.cpp: In constructor ‘MyClass2::MyClass2(const MyClass1&)’:
example.cpp:10:37: error: invalid conversion from ‘const MyClass1*’ to ‘MyClass1*’ [-fpermissive]
MyClass2(const MyClass1& obj){ptr = &obj;};
Mögliche Duplikat [Was ist der Unterschied zwischen const int \ *, const int \ * const und int const \ *?] (Http://stackoverflow.com/questions/1143262/what-is-the-difference -between-const-int-const-int-const-und-int-const) –
Warum entfernen Sie nicht den "const" Modifikator Ihres 'obj' Arguments? Sie könnten auch direkt den Zeiger anstelle der Referenz übergeben. – aslg
@aslg: weil ich nicht möchte, dass der Konstruktor das Objekt ändern kann. (Ich weiß, dass es nichts gibt, was das Objekt tatsächlich verändert) – giusva