我的模拟器(c++)使用python作为绑定。
在我的c++中,我定义数组如下
这是我的变量声明(在头中)Ptr m_names [2];
这是我的函数声明(在头中)
^{pr2}$
在源文件中void Interest::SetName (unsigned which, Ptr name)
{
if (which < 2)
{
m_names[which] = name;
}
}
void Interest::SetName (unsigned which, const Name &name)
{
if (which < 2)
{
m_names[which] = Create (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<: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<:ndn::name>)
./ns3/ndn-data.h:60:3: note: candidate expects 2 arguments, 1 provided
这是SetName的原始python代码PyObject *
_wrap_PyNs3NdnData_SetName__0(PyNs3NdnData *self, PyObject *args, PyObject *kwargs, PyObject **return_exception)
{
PyObject *py_retval;
PyNs3NdnName *name;
ns3::ndn::Name *name_ptr;
const char *keywords[] = {"name", NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "O!", (char **) keywords, &PyNs3NdnName_Type, &name)) {
{
PyObject *exc_type, *traceback;
PyErr_Fetch(&exc_type, return_exception, &traceback);
Py_XDECREF(exc_type);
Py_XDECREF(traceback);
}
return NULL;
}
name_ptr = (name ? name->obj : NULL);
self->obj->SetName(ns3::Ptr< ns3::ndn::Name > (name_ptr));
Py_INCREF(Py_None);
py_retval = Py_None;
return py_retval;
}
我是python中的新成员,需要基于给定代码的帮助来设置python中的数组定义。谢谢