假设我有一个像这样的C ++类:
class Container
{
private:
union {
Foo* foo;
Bar* bar;
} mPtr;
};
这个类将在堆栈上构建。即它不会被new
编辑,所以我不能只声明归零operator new
。
我可以在构造函数中使用初始化程序以某种方式将mPtr
设置为nullptr
吗?
Container()
: mPtr(nullptr)
{
}
无法编译。甚至没有添加union
类型的虚拟nullptr_t
成员。
Container()
: mPtr.foo(nullptr)
{
}
也无法编译。
答案 0 :(得分:10)
答案 1 :(得分:0)
取决于您使用的编译器。这应该有效,但VS 2013不支持它。
Container(): mPtr{nullptr}
{
}
但这确实有效:
union {
int* foo {nullptr};
double* bar;
} mPtr;
答案 2 :(得分:0)
只需默认初始化它。
Container()
: mPtr()
{
}