2011-04-12 58 views
1

我正在使用C++作为项目。我需要存储一对(字符串,整数),并根据字符串访问它们。 multimap类似乎是完美的。我试图做我自己的类,数据库,它将包括方法来查找与特定字符串关联的所有整数的平均值和计数。但是,我对最初的构造函数有点困惑。当调用database data();时,我的数据库应该被创建,但它会产生一个巨大的错误。使用C++中的multimap类创建数据库类

这里是构造在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 

编辑:

我忘了补充,感谢您的帮助!

生锈

回答

3

您声明datamultimap<string,double>*但你试图给data一个multimap<string,int>* - 调和这些。

另外,database data();不是你想要的 - 它实际上是一个名为data的无函数声明,返回类型为database;改为使用database data;

+0

'数据库数据();'的好结果。应该注意的是'database * data = new database()'可以正常工作,尽管最后的括号是不必要的。 – Anton 2011-04-12 02:12:37

+0

太棒了。非常感谢。 – Rusty 2011-04-12 16:40:13