1

我正在为一个项目使用 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

编辑:

忘记补充了,谢谢帮助!

生锈的

4

1 回答 1

3

您声明data为 amultimap<string,double>*但随后您尝试分配给dataa multimap<string,int>*-- 协调这些。

顺便说一句,database data();这不是你想要的——它实际上是一个以data返回类型命名的空函数的声明database;改为使用database data;

于 2011-04-12T01:57:52.257 回答