0

プログラムが使用するストリーム(データベースまたはファイル)を選択できるように、いくつかのイベントに依存するデュアルストリームシステムを構築しています。私はファイルを使用するときにデータベースをシミュレートすることを考え、これを思いつきました。std:: listはSqlRowとして、マップはそれぞれに関連付けられた列と値の値になります。説明するために:

typedef map<string, string> SqlColumn;
typedef list<SqlColumn> SqlRow;

このように定義すると、次のようなことSqlRow *data = new SqlRow(0); をするとエラーが発生します。data[row].insert(make_pair("Key", "Value"));

error C2661: 'std::list<_Ty>::insert' : no overloaded function takes 1 arguments
1>        with
1>        [
1>            _Ty=SqlColumn
1>        ]

つまり、コンパイラはある種の多次元リストを作成しているようです。そこに他の次元を配置すると、機能します。(実際には別のエラーが発生します。ただし、必要なマップを示しています。エラーはそれとは関係ありません。ただし、投稿します。)

誰かが何が起こっているのか教えてもらえますか?

追加情報:エラーC2676:

binary '[' : 'SqlRow' does not define this operator or a conversion to a type acceptable to the predefined operator
error C2228: left of '.insert' must have class/struct/union
4

1 に答える 1

1

私はC++の専門家ではありませんが、オブジェクトポインタであるdata[row]ことでできるとは思いません。data

于 2013-01-15T22:46:47.067 に答える