我有一个Visual Studio 2008 C ++项目,我希望在其中堆积一个结构并使用初始化列表对其进行初始化。
class Foo {
public:
explicit Foo( int a );
};
struct Bar {
Foo foo;
int b;
};
Bar a = Bar { Foo( 1 ), 2 }; // Works!
Bar* b = new Bar{ Foo( 1 ), 2 }; // Errors!
有办法做到这一点吗?
答案 0 :(得分:2)
尝试
Bar* b = new Bar({ Foo( 1 ), 2 });
Disclamer:仅使用GCC -std=c++0x
进行测试。
答案 1 :(得分:1)
C ++ 11允许它或类似的东西。既然你正在使用VC 2008, 但是,这对你没有帮助。我知道的唯一解决方案是创建一个 初始化本地实例,然后传递:
Bar forInitialization = { Foo( 1 ), 2 };
Bar* b = new Bar( forInitialization );
答案 2 :(得分:0)
尝试在结构中添加构造函数,在调用new
时调用它