2013-05-16 48 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,同意。首選初始化列表以在構造函數中進行賦值。 –