我正在使用C ++进行项目。我需要存储一对(字符串,整数)并根据字符串访问它们。 multimap类看起来很完美。我正在尝试创建自己的类数据库,其中包括查找与特定字符串关联的所有整数的平均值和计数的方法。但是,我对初始构造函数有点困惑。我的数据库应该在调用database data();
时创建,但它会出现一个巨大的错误。
这是database.cpp
中构造函数的实现 database::database()
{
data = new multimap<string,int>; // allocates new space for the database
*data["asdf"]= 0; // adds a point. not needed...?
}
此外,database.h文件看起来像这样。
private:
multimap<string,double> *data;
错误相当密集,我无法破译它,但是当我运行g ++ database.cpp test.cpp时,这就出现了。
$ g++ database.cpp test.cpp
database.cpp: In constructor ‘database::database()’:
database.cpp:11: error: cannot convert ‘std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > >*’ to ‘std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double> > >*’ in assignment
database.cpp:12: error: invalid types ‘std::multimap<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, double> > >*[const char [5]]’ for array subscript
编辑:
我忘了补充,谢谢你的帮助!
生锈
答案 0 :(得分:3)
您将data
声明为multimap<string,double>*
,但之后尝试分配给data
multimap<string,int>*
- 协调这些内容。
顺便说一下,database data();
不是你想要的 - 它实际上是一个名为data
的nullary函数的声明,其返回类型为database
;请改用database data;
。