C++ 在结构c++;
我从编程开始,我的英语说得不好,对此我很抱歉 我喜欢在结构内部使用列表而不是数组,类似这样:C++ 在结构c++;,c++,list,struct,C++,List,Struct,我从编程开始,我的英语说得不好,对此我很抱歉 我喜欢在结构内部使用列表而不是数组,类似这样: #include <iostream> #include <list> using namespace std; struct Market { string b; list <int> prices; }; int main() { list <int> precios; Market m1 =
#include <iostream>
#include <list>
using namespace std;
struct Market {
string b;
list <int> prices;
};
int main()
{ list <int> precios;
Market m1 = {"a",NULL};
return 0;
}
#包括
#包括
使用名称空间std;
结构市场{
b串;
标价;
};
int main()
{名单;
市场m1={“a”,空};
返回0;
}
但是我得到了从int'到非标量类型std::list的错误转换|
这可能吗?可能使用malloc或free?您正试图用空指针值(实际上是int
类型)初始化列表。如果您需要按值存储列表,您可以像这样初始化'm1'
Market m1 = {"a", std::list<int>()};
marketm1={“a”,std::list()};
您应该定义一个构造函数
struct Market {
Market(string val){b=val;}
// or like this:
// Market(string val):b(val){}
string b;
list <int> prices;
};
由于列表默认构造函数创建空列表,所以不需要传递任何参数
关于类的基础知识的一本好书:NULL
不是std::list
类型,这就是为什么会出现此错误
您使用的是C++11编译器吗
如果是,请尝试:
Market m1 = {"a", { NULL } };
否则:
list<int> prices;
Market m1;
m1.b = "a";
m1.prices = prices;
价目表;
市场m1;
m1.b=“a”;
m1.价格=价格;
prices
不是一个指针,但它看起来像是你期望它可以做的m1={“a”}代码>也一样,但构造函数更可取。更好的构造函数:Market(const std::string&val):b(val){}
@MatthewLundberg,同意。与构造函数中的赋值相比,更喜欢初始化列表。
list<int> prices;
Market m1;
m1.b = "a";
m1.prices = prices;