2011-04-12 55 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