[openrtm-beginners:00563] Re: TimedString型の変数が入りません
BiggsGeoffrey
geoffrey.biggs @ aist.go.jp
2015年 6月 26日 (金) 07:06:49 JST
以下の問題はCORBAのデータ型に関します。
OpenRTMのデータ型はCORBAのデータ型です。CORBAでは、stringはstd::stringではなくて、
CORBA::String_varやCORBA::String_outです。CORBAのAPIはC++より古くて、STLとの互換性はほぼなしです。
stringを使うとき、CORBAが提供するメモリ管理の関数を使ってください。作るときはstring_alloc、コピーするときはstring_dupです。例えば:
std::string string01;
abc::onExecute(RTC::UniqueId ec_id)
{
string01 = "hello";
m_str.data = CORBA::string_dup(string01.c_str());
m_str_port.write()
return RTC_OK;
}
C stringの場合は、2回目のループではデータがフリーされたので落ちます。
ジェフ
________________________________________
From: openrtm-beginners-bounces at openrtm.org <openrtm-beginners-bounces at openrtm.org> on behalf of rrrraive at yahoo.co.jp <rrrraive at yahoo.co.jp>
Sent: Thursday, 25 June 2015 7:02 p.m.
To: openrtm-beginners at openrtm.org
Subject: [openrtm-beginners:00561] TimedString型の変数が入りません
現在、RTミドルウェアを使用してソフトウェアを開発中です。
こちらの技術不足、または見落としがあるかもしれませんが
TimedString型で作成したコンポーネントのデータにstrind型の変数が入りません。
また、char型で文字を入力した後、エラーはなく実行できるのですが、2回ループが回ると落ちてしまいます。
このエラーに対する対処方法はありますか。
もしあれば教えていただければ幸いです。 ****
以下 ソース ***** std::string string01; RTC::ReturnCode_t
abc::onExecute(RTC::UniqueId ec_id) { char[64] c; string01 = "hellow";
m_str.data = string01; //ここで = にエラーがでます cin >> c;
m_str.data = c;
//ここではエラーがありませんが2回目のループでプログラムが落ちてしまいます
m_strOut.write(); return RTC::RTC_OK; }
以上になります。よろしくお願いします。
_______________________________________________
openrtm-beginners mailing list
openrtm-beginners at openrtm.org
http://www.openrtm.org/mailman/listinfo/openrtm-beginners
More information about the openrtm-beginners
mailing list