Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在结构c++;_C++_List_Struct - Fatal编程技术网

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;