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

NULLはタイプ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 に答える
0

listnull ポインター値 (実際にはint型)でを初期化しようとしています。リストを値で保存する必要がある場合は、「m1」を次のように初期化できます

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