2013-05-16 3 views
1

Я начинаю с программирования, и я плохо говорю по-английски.Использование списка внутри структуры 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

Вы пытаетесь инициализировать list нулевым значением указателя (фактически int). Если вам нужно сохранить список по значению можно инициализировать «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 = { «А "};', но конструктор гораздо более желателен. –

+1

Лучший конструктор: 'Market (const std :: string & val): b (val) {}' –

+0

@MatthewLundberg, согласен. Предпочитают списки инициализации для назначения в конструкторах. –

Смежные вопросы