私のC ++シミュレーションで配列を実装しようとしています(提供されたこのコーディングは、1つのネットワークパケットフィールドに2つの値を持つことです)
これは私の変数宣言です(ヘッダー内)
Ptr<Name> m_names [2];
これは私の関数宣言です(ヘッダー内)
void SetName (unsigned which, Ptr<Name> name);
void SetName (unsigned which, const Name &name);
ソースファイルで
void Interest::SetName (unsigned which, Ptr<Name> name)
{
if (which < 2)
{
m_names[which] = name;
}
}
void Interest::SetName (unsigned which, const Name &name)
{
if (which < 2)
{
m_names[which] = Create<Name> (name);
}
}
これを呼び出す方法は次のとおりです(メインファイル内):
interest->SetName (0, nameWithSequence);
interest->SetName (1, nameWithNextSequence);
その結果、このようなエラーが発生します
src/ndnSIM/bindings/ns3module.cc: In function ‘PyObject* _wrap_PyNs3NdnData_SetName__0(PyNs3NdnData*, PyObject*, PyObject*, PyObject**)’:
src/ndnSIM/bindings/ns3module.cc:8418:62: error: no matching function for call to ‘ns3::ndn::Data::SetName(ns3::Ptr<ns3::ndn::Name>)’
src/ndnSIM/bindings/ns3module.cc:8418:62: note: candidates are:
./ns3/ndn-data.h:60:3: note: void ns3::ndn::Data::SetName(unsigned int, ns3::Ptr<ns3::ndn::Name>)
./ns3/ndn-data.h:60:3: note: candidate expects 2 arguments, 1 provided
問題は、正しいステートメントを宣言する正しい方法は何かです。どんな種類の助けにも感謝します
編集私のC++コード(SetName)をバインドするためのpyhton定義のいくつかを見つけました
def __setattr__(self, name, value):
if name == "_interest":
return object.__setattr__ (self, name, value)
elif name == "name":
if value is None:
return self._interest.SetName (ns.ndnSIM.ndn.Name ())
elif isinstance (value, Name):
return self._interest.SetName (value._name)
elif isinstance (value, ns.ndnSIM.ndn.Name):
return self._interest.SetName (value)
elif isinstance (value, str):
return self._interest.SetName (ns.ndnSIM.ndn.Name (value))
else:
raise ValueError ("Invalid name parameter")
これを解決する正しい方法と方法は何ですか。ありがとう