我正在构建一个依赖于某些事件的双流系统,因此程序可以选择要使用的流(数据库或文件)。
我有在使用文件时模拟数据库的想法,并提出了以下建议:
一个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
最佳答案
我不是C ++专家,但我认为您不能将data[row]
作为对象指针来执行data
。