このクラスを書いてみました
#include <memory>
class ContainerUnique
{
public:
ContainerUnique(void);
~ContainerUnique(void);
private:
std::unique_ptr<UniqueElement> u;
};
UniqueElement は、別の場所で定義された POD クラスです。コンストラクタ本体を次のように定義します。
ContainerUnique::ContainerUnique(void)
{
auto tmp = new UniqueElement(1);
this->u(tmp); // u is a unique_ptr<UniqueElement>. Should this call compile?
}
そしてそれは例外なく遵守します。ContainerUnique
プログラムを実行すると、コンストラクターが呼び出された後u
に null ポインターが含まれていることがわかりました。
これは意図した動作ですか?そして、実際に呼び出している unique_ptr メソッドは何ですか?