ホームページ >バックエンド開発 >C#.Net チュートリアル >C++ minisv ライブラリのコンパイル エラーと解決策

C++ minisv ライブラリのコンパイル エラーと解決策

黄舟
黄舟オリジナル
2016-12-14 16:54:271379ブラウズ

データを表示するために CSV ファイルを記述する必要があるプロジェクトがあります。 Githubにminicsvというcsvの軽量読み書きライブラリがあったのでダウンロードしてみました。ただし、サンプルのコンパイル時に次の問題が発生しました:

example.cpp からインクルードされたファイル内:1:0:
minicsv.hpp: 関数内 'csv::ofstream& 演算子<<(csv::ofstream&, const T&)':
minicsv.hpp:326:38: エラー: 呼び出しに一致する関数がありません 'csv::ofstream::escape_and_output(std::basic_ostringstream::__string_type)'
ostm.escape_and_output(os_temp.str());
^
minicsv.hpp:326:38: 注: 候補は:
minicsv.hpp:266:8: 注: 無効です csv::ofstream::escape_and_output(std::string&)
void escape_and_output(std::string & src)

...

エラーが多いので、スペースを取るのでこれ以上は載せません。これらのエラーはすべて同じ関数ヘッダーから発生します。関数ヘッダーは次のように定義されています:

voidscape_and_output(std::string & src)

そして呼び出し時は次のようになります:

ostm.escape_and_output(os_temp.str());

明らかに、呼び出し時の関数ヘッダーには右辺値参照が必要で、実際の関数ヘッダーは左辺値参照を与えます。 2 つは一致しないため、コンパイラはエラーを報告します。変更は非常に簡単で、「&」を「&」に変更するだけです。つまり、関数ヘッダーを次のように変更します。
voidscape_and_output(std::string & src)
非常に明らかな間違いなので、最初は書きたくなかったのですが、c++0x に詳しくない人が戸惑うのではないかと思い、投稿しました。また、なぜプロジェクトにこのような明らかなエラーがあるのか​​わかりません。おそらく、上司のコンパイラが賢すぎるのでしょう。

その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。