これは2つの質問の1つです。C++ constをオブジェクトコンストラクタとメンバ関数で使用する
constを使用しようとすると、コンパイルエラーが発生します。
私が達成しようとしていること。
私のクラスのコンストラクタでは、私はオブジェクトへのポインタを渡します。私はconstを使用するようにオブジェクトのアドレスと値を変更したくありません。ここに私のコードは私が受けています
C* const m_mth1_ex;
D* const m_mth2_ex ;
エラーファイルクラスのヘッダに
クラスコンストラクタ
A::A(const B* const example): m_example(example) {
m_mth1_ex = m_example->method1();
m_mth2_ex = m_example->method2();
}
次のようになります。私は、初期化していますので、思った
error: uninitialized member 'A::m_mth1_ex' with 'const' type 'C* const'
error: uninitialized member 'A::m_mth2_ex' with 'const' type 'D* const'
error: assignment of read-only data-member 'A::m_mth1_ex'
error: assignment of read-only data-member 'A::m_mth1_ex'
をこれらのコンストラクタの値はこれで問題ありませんでしたが、ヘッダーファイルでそれらを宣言してconstはしませんそのように...
第2に、クラスBのメソッドはconstオブジェクトを返さないのですか?
最後に、メソッドはconst値とアドレスを持つクラスBから来ているので、これらのメソッドは変更できますか?
私はコンストラクタでこの非常に問題があると思います。私はあなたが言っているように、新しい演算子をオーバーロードするか、スマートポインタを使いやすくする必要があります: - D – MWright