質問: 'q') break; } cv::destroyAllWindows(); } int main(int argc, char** argv) { try { doJob(); } catch (exception &ex) { cout << ex.what() << endl; string s; cin >> s; } return 0; } エラーコード 3 IntelliSense: これらのオペランドと一致する演算子 ">>" はありません オペランドの型: std::ifstream >> ColorSpacePoint c:\Users\ishikawa\Downloads\KinectV2_skeleton (1)\KinectV2_skeleton\KinectV2\main.cpp 13 6 KinectV2 4 IntelliSense: これらのオペランドと一致する演算子 "<<" はありません オペランドの型: std::ostream << ColorSpacePoint c:\Users\ishikawa\Downloads\KinectV2_skeleton (1)\KinectV2_skeleton\KinectV2\main.cpp 29 13 KinectV2 エラー 1 error C2679: 二項演算子 '>>' : 型 'ColorSpacePoint' の右オペランドを扱う演算子が見つかりません (または変換できません)。 C:\Users\ishikawa\Downloads\KinectV2_skeleton (1)\KinectV2_skeleton\KinectV2\main.cpp 13 1 KinectV2 エラー 2 error C2679: 二項演算子 '<<' : 型 'ColorSpacePoint' の右オペランドを扱う演算子が見つかりません (または変換できません)。 C:\Users\ishikawa\Downloads\KinectV2_skeleton (1)\KinectV2_skeleton\KinectV2\main.cpp 29 1 KinectV2
回答: こんにちは。 そのエラーがでるのはColorSpacePoint用のistream::operator>>とostream::operator<<が定義されていないからです。このような時は、各operator用に定義されている型まで分解して、それぞれのメンバ変数を各operatorに与えることで対応できます。 この場合は、例えば、ifstream >> str.X >> str.Y;などです。(`,`の読み飛ばしが別途必要です。) しかし、X, Yの型float32は見慣れない型です。 ColorSpacePointを見ると見慣れない定義になってますし、C#用の記述もあるので、ColorSpacePointはC++/CLI用の定義ではないでしょうか? C++/CLIはC++をマイクロソフトが独自に拡張した言語ですのでC++には存在しない記述が可能です。 そして、C++/CLIで拡張された型はC++の標準ライブラリが使えないことも少なくありません。 float32はC++に標準では存在しませんのでC++/CLIで拡張された型のようです。 もし、`ifstream >> str.X;`がコンパイル・エラーになるようでしたら、.NETでcsvファイルとのやり取りをする方法を調べて、大抵はC#やVBで記述されているのでそれをC++/CLIへ翻訳するのが速いと思います。 しかし、それはそれで手間がかかります。今後も同様な問題に引っかかる可能性も結構あります。 C#はC++と文法も似てますし学習コストはそれほど大きくありません。規模にもよりますがdaaaasさんのプログラムをC#で直接書いた方がトータルでは早いかもしれません。