数组初始化中的C ++隐式类构造

时间:2014-03-20 21:45:17

标签: c++

这是我正在尝试做的事情:

struct Foo
{
    Foo(int id, string name) : id(id), name(name) {}
    int id;
    string name;
};

Foo foo[] = {(1, "one"), (2, "two")};

失败,“无法从const char *转换为Foo”。我假设Foo将被隐式构造。这可能吗?我正在使用VS2010。

3 个答案:

答案 0 :(得分:3)

是的,您可以使用以下语法(C ++ 11):

Foo foo[] = { {1, "one"}, {2, "two"}};

或:

Foo foo[] = { Foo(1, "one"), Foo(2, "two")};

compiled example

答案 1 :(得分:2)

在C ++ 11中使用以下语法:

Foo foo[] = { {1, "one" }, { 2, "two" } };

答案 2 :(得分:1)

你可以使用  Foo foo[] = {Foo(1, "one"), Foo(2, "two")};

相关问题