2013-10-24 27 views

回答

4

这应该工作:

list.push_back(Row{"",23}); 

以及本:

list.push_back({"",23}); 

上述工作适用于C++ 11和现代编译器,例如GCC或Clang。如果你不能使C++ 11或者它不与你的编译器的支持,你需要一个构造函数添加到:

struct Row 
{ 
    Row(const std::string& d, int w) : data(d), weight(w) {} 

    // ... 
}; 

,你可以使用:

list.push_back(Row("",23)); 
+0

我使用视觉工作室和它不工作。 typedef struct Row { \t字符串数据; \t int weight; \t }行; list.push_back(Row {“1111”,1});错误:struct Row..type name不允许 – kofhearts

+0

@ user734861针对较早的编译器进行了更新。 –

+0

@ user734861'typedef struct X {...} X;'在C++中没有意义,简单的'struct X {...};'也适用。 –