私のコードはうまくコンパイルされますが、これは私を悩ませているものです。私はstackoverflowで答えを見つけることができませんでした。次の汎用コンストラクタは、コンストラクタ内のクラスインスタンスにshared_ptrを渡す方法の1つです。なぜconst shared_ptrをコピーしてもconstには違反しないのですか?
MyClass {
MyClass(const std::shared_ptr<const T>& pt);
std::shared_ptr<const T> pt_; //EDITED: Removed & typo
};
MyClass::MyClass(const std::shared_ptr<const T>& pt)
: pt_(pt)
{ }
これはうまくコンパイルされます。私の質問は次のとおりです:私の理解では、このようなパラメータconstを宣言します:
void myfunc(const T& t)
約束しないでください。 しかし、shared_ptr ptをpt_にコピーすることで、shared_ptr ptの使用回数を効果的に増やすことはできません。
これは私の側のshared_ptrsの基本的な誤解かもしれませんか?
(誰がこれを読んでそれを実装するために探して、thisは、より高度な実装であるかもしれないことに注意)
@LogicStuff:あなたがクラス定義の余分な&を意味するなら、私は自分の投稿を編集しました。しかし、コンストラクタの定義はうまくコンパイルされますか? – Thomas
@Thomasこれで、 'const'オブジェクトをreference-to-non-constにバインドすることはできません。 – LogicStuff
@MichaelBurrが編集しました、あなたはpt_の宣言で私のタイプミスを指摘していたと思います。 – Thomas