2013-05-16 21 views
1

我开始编程,我说英语不好,对不起。在struct C++中使用列表

我喜欢用一个列表,而不是一个数组,一个结构里面,像这样:

#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或免费?

+5

'prices'不是指针,但它看起来像你希望它是 –

回答

0

NULL不是类型std::list<int>的,这就是为什么你得到这个错误。

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

如果是,那么尝试:

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

否则:

0

您正试图用空指针值(实际上是int类型)初始化list。如果您需要按值存储列表可以初始化“M1”像这样

Market m1 = {"a", std::list<int>()}; 
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/

+0

他能做'M1 = {“A “};'但是构造函数更合乎需要。 –

+1

更好的构造函数:'市场(const std :: string&val):b(val){}' –

+0

@MatthewLundberg,同意。首选初始化列表以在构造函数中进行赋值。 –