2017-03-22 8 views
0

を読ん:omnetpp:私はNEDファイルで定義されている次のモジュールを持つモジュールパラメータ

@namespace(cbsdsim); 
simple SASSim { 
    parameters: 
     @class(SASSim); 
     int maxCbsdsPerSas = 10; 
} 

私は(別のモジュールから)以下を呼び出すことで、モジュールを作成します。

cModuleType* sasSimModType = cModuleType::find("SASSim"); 
sasSimModType->setName("SASSim"); 
char* name = "SAS.1"; 
SASSim* sasSimMod = (SASSim*) sasSimModType->create(name,parent); 

コンストラクタSASSimが呼び出されます。

ただし、omnetppは上記のコードでpar(...)を呼び出すのに不満です。私は例外と紛らわしいエラーメッセージが表示されます。

what(): (omnetpp::cModule): Object has no associated cComponentType (maybe omnetpp::cModule is not derived from cModule/cChannel?) 

確かに私はthis-を追加するとき> getNumParams()コンストラクタで、私はハードのパラメータをコーディングした場合には、0を返します。初期化が正常に動作しますので、私は私が必要と仮定しますパラメータをロードするために何かをする。私はおそらく、omnetpp.iniまたは他の場所にパラメータを置くことができましたが、なぜこれがうまくいかないのか知りたいのですが。私はparamsをロードするためにcreateを呼び出す前に何かする必要がありますか?ありがとう、

+0

私はinitialize()の後でしかパラメータを読むことができないようです。したがって、initialize()メソッドでpar()を呼び出すと、パラメータを読み取ることができます。したがって、モジュールパラメータを読み取ることに基づくゲート割り当てのような設定は、初期化後にのみ行うことができます。 – LostInTheFrequencyDomain

答えて

0

モジュールのコンストラクタではなく、初期化後にのみパラメータにアクセスできます。これは、cGatesなどを作成するとコンストラクタから正常に動作するため、少し奇妙です。

関連する問題