У меня есть несколько std::unordered_maps
. Все они имеют std::string
как свой ключ, и их данные различаются. Я хочу сделать строку csv из заданных ключей карты, потому что эти данные должны быть отправлены по проводу подключенному клиенту. На данный момент у меня есть метод для каждой отдельной карты. Я хотел сделать это родовым, и я придумал следующее:
std::string myClass::getCollection(auto& myMap) {
std::vector <std::string> tmpVec;
for ( auto& elem : myMap) {
tmpVec.push_back(elem.first);
}
std::stringstream ss;
for ( auto& elem : tmpVec ) {
ss << elem <<',';
}
std::string result=ss.str();
result.pop_back(); //remove the last ','
return result;
}
Я компилирую с gcc 6.1.0 и -std = С++ 14 с использованием eclipse, и он компилируется, но он не связан.
Компилятор жалуется на undefined ссылку на std::__cxx11::getCollection(someMap);
Независимо от данных карты и того, как я ее называю, она всегда говорит мне:
Invalid arguments ' Candidates are: std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>> getCollection() '
Как это решить?