список инициализаторов для выделенной кучи структуры - PullRequest
3 голосов
/ 16 марта 2012

У меня есть проект 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!

Есть ли способ сделать это?

Ответы [ 3 ]

2 голосов
/ 16 марта 2012

Попробуйте

Bar* b = new Bar({ Foo( 1 ), 2 });

Отказ от ответственности: тестируется только с GCC -std=c++0x.

2 голосов
/ 16 марта 2012

C ++ 11 позволяет, или что-то очень похожее. Так как вы используете VC 2008, Однако это не поможет вам. Единственное решение, которое я знаю, это создать локальный экземпляр с инициализацией, а затем передать это:

Bar forInitialization = { Foo( 1 ), 2 };
Bar* b = new Bar( forInitialization );
0 голосов
/ 16 марта 2012

Попробуйте добавить конструктор в вашу структуру, он будет вызываться при вызове new

...