1

我从编程开始,我说英语不好,对此感到抱歉。

我喜欢在结构内部使用列表而不是数组,如下所示:

#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;
} 

但我从int' to non-scalar type std::list<int, std::allocator<int> >请求得到这个错误转换|

这可能吗?也许使用 malloc 或免费?

4

3 回答 3

3

你应该定义一个构造函数

struct Market {

    Market(string val){b=val;}
    // or like this:
    // Market(string val):b(val){}
    string b;
    list <int> prices;
};

然后您将能够创建对象,例如:

Market a("A");

由于列表默认构造函数创建空列表,您不需要传递任何参数。

关于类基础知识的好读物:http ://www.cplusplus.com/doc/tutorial/classes/

于 2013-05-16T19:10:42.530 回答
0

list您正在尝试使用空指针值(实际上是一种int类型)来初始化。如果您需要按值存储列表,您可以像这样初始化“m1”

Market m1 = {"a", std::list<int>()};
于 2013-05-16T19:10:25.300 回答
0

NULL不是 type std::list<int>,这就是您收到此错误的原因。

您使用的是 C++11 编译器吗?

如果是,请尝试:

Market m1 = {"a", { NULL } }; 

否则:

list<int> prices;
Market m1;
m1.b = "a";
m1.prices = prices;
于 2013-05-16T19:12:13.780 回答