создание класса базы данных с использованием класса multimap в c ++ - PullRequest
1 голос
/ 12 апреля 2011

Я работаю с C ++ для проекта. Мне нужно хранить пару (строка, целое число) и доступ к ним на основе строки. Класс мультикарты кажется идеальным для этого. Я пытаюсь создать свой собственный класс, базу данных, которая будет включать методы для определения среднего и количества всех целых чисел, связанных с конкретной строкой. Тем не менее, я немного запутался в начальном конструкторе. Моя база данных должна быть создана, когда вызывается 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

Edit:

Я забыл добавить, спасибо за помощь!

Расти

1 Ответ

3 голосов
/ 12 апреля 2011

Вы объявляете data как multimap<string,double>*, но затем пытаетесь присвоить data a multimap<string,int>* - согласовать их.

Кроме того, database data(); - это не то, что вам нужно - это фактически объявление нулевой функции с именем data с типом возврата database; используйте вместо этого database data;.

...