正确定义python数组的方法
correct way to define array in python
我的模拟器(C )使用python作为绑定。在我的C 中,我定义数组如下
这是我的变量声明(在标题中)
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
这是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;
}
im im新的python中,需要在Python中设置数组定义的代码上的帮助。谢谢
基于http://ndnsim.net/getting-started.html,ndnsim使用pybindgen生成python绑定。基于http://packages.python.org/pybindgen/tutorial.html#work-flows可以生成3种方法,您必须找到一个NDN使用。如果您必须编写Python脚本,请验证
mod.add_function('SetName', None, ['int', '...'])
有两个参数而不是1(按http://packages.python.org/pybindgen/tutorial.html#code-generation-script)。但是我的猜测是,您或NDNSIM在标题文件上运行(PY)GCCXML。如果是这种情况,那么问题可能是Pybindgen中的错误,因为T直接读取您的标题文件,这不是您做错的事情。
您应该验证您的.H和CPP是否在NDNSIM之外进行编译并正确构建(评论任何NDNSpecific的代码)并在main.cpp中运行,以确保它确实是一个Pybindgen问题。
考虑发布到http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim。
相关文章:
- 初始化具有非默认构造函数的std::数组项的更好方法
- 复制几乎为空的数组的最快方法
- 通过JNI传递数据数组的最快方法是什么
- 在调用接收数组的方法时,模板化数组大小是不是一种糟糕的做法
- 数组元素打印的递归方法
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 有没有一种代码密度较低的方法来使用非默认构造函数初始化数组?
- C++数组队列实现方法错误
- 寻找一种更好的方法来表示无符号字符数组
- 在 C++ 中将整数数组转换为位集表示形式的最佳方法?
- 初始化数组、"memset"或" {//value} "的最佳方法是什么?
- 创建异构顶点数据数组的可移植方法
- 打印字符数组地址的正确方法
- 还有其他方法可以在数组中写入多维数组吗?
- 从数组中删除非唯一值、保持顺序和不使用向量的最佳方法?
- 有没有一种惯用的方法可以在不存储变换或不必要地重新计算的情况下找到数组变换的最小/最大值?
- 从非类型模板参数声明 constexpr 数组的可移植方法
- 初始化不是整数的巨大常量多维数组的最佳方法是什么?
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案