クラスのコンストラクターを介して、別のクラスのオブジェクトへのポインターを格納します。それを行う正しい方法は何ですか?'const type *'から 'type *'への無効な変換
を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;
}
あなたはptr
ポイントはにその事を変更したい場合は、あなたの関数がで引数を取る必要がある私は、このエラー
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 const-int-const-int-const-and-int-const) –
'obj'引数の' const'修飾子を削除してみませんか?また、参照の代わりにポインタを直接渡すこともできます。 – aslg
@aslg:コンストラクタがオブジェクトを変更できることを望まないので。 (私はそのオブジェクトを実際に変更するものは何もないことを知っています) – giusva