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

dataa として宣言しますが、次にamultimap<string,double>*に割り当てようとします-- これらを調整します。datamultimap<string,int>*

余談database data();ですが、あなたが望むものではありません。実際にはdata、戻り値の型がdatabase;であるという名前の nullary 関数の宣言です。代わりに使用database data;します。

于 2011-04-12T01:57:52.257 に答える