Я хочу сохранить через конструктор класса указатель на объект другого класса. Каков правильный способ сделать это?Неверное преобразование из 'const type *' to 'type *'
Если я могу заменить MyClass1* ptr
на const MyClass1* ptr
, нет ошибок, но в этом случае я думаю, что я не могу изменить ptr
. Каков правильный способ добиться того, чего я хочу?
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;
}
Собирать через g++ -o example example.cpp
дать мне эту ошибку
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;};
Возможный дубликат [В чем разница между const int \ *, const int \ * const и int const \ *?] (Http://stackoverflow.com/questions/1143262/what-is-the-difference -between-const-int-const-int-const-and-int-const) –
Почему бы вам не удалить модификатор 'const' вашего аргумента' obj'? Также вы можете напрямую передать указатель вместо ссылки. – aslg
@aslg: потому что я не хочу, чтобы конструктор мог изменять объект. (я знаю, что нет ничего, что реально меняет этот объект) – giusva