私はいくつかのstd::unordered_maps
を持っています。それらはすべてキーとしてstd::string
を持ち、そのデータは異なります。私はそのデータが有線を介して接続されたクライアントに送信される必要があるため、指定されたマップのキーからCSV文字列を作成したい。現時点では、それぞれのマップごとにメソッドがあります。私は、これは一般的な作りたかったと私は、次のを思い付いた:C++ 14メソッドの定義でautoキーワードを使用
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 = C++ 14でコンパイルすると、それはコンパイルが、それはリンクされません。
Invalid arguments ' Candidates are: std::__cxx11::basic_string<char,std::char_traits<char>,std::allocator<char>> getCollection() '
がどのように私はこれを解決するのです: リンカは、それは常に私に語った、未定義std::__cxx11::getCollection(someMap);
かかわらず、地図データの
を参照すると、私はそれを呼び出す方法について不平を言いますか?
'std :: string myClass :: getCollection(auto&myMap)'は有効な構文ではありません。特に、 'auto'はメンバ関数にとって有効なパラメータ型ではありません。 – ildjarn
は私が別のアプローチを使って可能なことを達成しようとしているのですか?私は、C++ 14のパラメータとしてautoを使うことは可能だと考えました...明らかに私は間違っています... – ZoOl007
"*私はC++ 14のパラメータとしてautoを使用することが可能だと思いました... * "ラムダのみ。 "*私は別のアプローチを使って可能なことを達成しようとしていますか?* "はい、通常のテンプレートを使用してください:' template std :: string myClass :: getCollection(MapT&myMap) ' –
ildjarn