[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