Tôi muốn lưu trữ thông qua hàm tạo của lớp là con trỏ tới đối tượng của một lớp khác. Cách chính xác để làm điều đó là gì?chuyển đổi không hợp lệ từ ‘const type *’ thành ‘type *’
Nếu tôi thay thế MyClass1* ptr
bằng const MyClass1* ptr
không có lỗi, nhưng trong trường hợp này tôi nghĩ rằng tôi không thể thay đổi ptr
nữa. Cách chính xác để đạt được những gì tôi muốn là gì?
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;
}
Biên dịch nó qua g++ -o example example.cpp
cho tôi lỗi này
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;};
Bản sao có thể có của [Sự khác biệt giữa const int \ *, const int \ * const và int const \ *?] (Http://stackoverflow.com/questions/1143262/what-is-the-difference là gì -between-const-int-const-int-const-và-int-const) –
Tại sao bạn không loại bỏ 'const' bổ nghĩa của đối số' obj' của bạn? Ngoài ra bạn có thể trực tiếp vượt qua con trỏ thay vì tham chiếu. – aslg
@aslg: vì tôi không muốn rằng hàm tạo có thể sửa đổi đối tượng. (tôi biết rằng không có gì thay đổi thực tế đối tượng đó) – giusva