PCLVisualizer のメンバー関数にIDを渡す時、
それが、const std::string & id; となっている事を忘れてはならない。
ああ、関数内で変わらないのね。あっそ!
と、お気楽に構えていると痛い目にあう。
おそらく、登録系の関数 addTextとか addなんちゃら系は
は id をコピーせずに、参照をそのまま保持して永久参照している。
で、参照・再定義系の updateなんちゃら、は一時参照のみだ。
つまり、呼び出し側で auto変数やデストラクトされる変数で id を渡すと、不幸せが訪れる。
std::string id = "test#" + std::to_string(no);
viewer->addText("hogehoge", pos_x, pos_y, id);
とかやって、id がデストラクトされたり、
2度目の呼び出しで id の値を破壊してしまうと、
後々不幸になる。
オブジェクティブな環境は
暗黙の了解がありすぎて、今一つなじめない。
それが、const std::string & id; となっている事を忘れてはならない。
ああ、関数内で変わらないのね。あっそ!
と、お気楽に構えていると痛い目にあう。
おそらく、登録系の関数 addTextとか addなんちゃら系は
は id をコピーせずに、参照をそのまま保持して永久参照している。
で、参照・再定義系の updateなんちゃら、は一時参照のみだ。
つまり、呼び出し側で auto変数やデストラクトされる変数で id を渡すと、不幸せが訪れる。
std::string id = "test#" + std::to_string(no);
viewer->addText("hogehoge", pos_x, pos_y, id);
とかやって、id がデストラクトされたり、
2度目の呼び出しで id の値を破壊してしまうと、
後々不幸になる。
オブジェクティブな環境は
暗黙の了解がありすぎて、今一つなじめない。