我試着寫這個類奇怪的行爲,2010
#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
包含一個空指針。
這是預期的行爲?而且我真的在調用什麼unique_ptr方法?
不確定你遇到的問題。但通過在構造函數的初始化列表中初始化成員變量u來避免它們。 –
是的,這是我在真實代碼中使用的解決方案,但我仍然不確定該示例中發生了什麼。 –
嘗試打印您的自動變量的類型。不知道typeid是否工作。一旦你知道這個類型,其他的應該很簡單。 –