如何将Boost.Python中的map_索引_套件与自定义的非标准对象一起使用?

如何将Boost.Python中的map_索引_套件与自定义的非标准对象一起使用?,python,c++,boost,language-interoperability,Python,C++,Boost,Language Interoperability,“地图索引套件”使用的简单示例运行良好: 类(“测试图”) .def(映射索引套件()) ; 在python方面,它的工作原理与预期一致: a=riversim.testMap() a[1]=“sdf” 但是! 如果我尝试在地图中使用更复杂的对象边界条件,而不是字符串,例如下一个: enum t_边界 { DIRICHLET=0, 纽曼 }; 结构边界条件 { t_边界类型=狄里克莱; 双值=0; 布尔运算符==(常量边界条件和bc)常量; friend ostream&operator首

“地图索引套件”使用的简单示例运行良好:

类(“测试图”)
.def(映射索引套件())
;
在python方面,它的工作原理与预期一致:

a=riversim.testMap()
a[1]=“sdf”
但是! 如果我尝试在地图中使用更复杂的对象
边界条件
,而不是
字符串
,例如下一个:

enum t_边界
{
DIRICHLET=0,
纽曼
}; 
结构边界条件
{
t_边界类型=狄里克莱;
双值=0;
布尔运算符==(常量边界条件和bc)常量;
friend ostream&operator首先

bcs = riversim.t_BoundaryConditions
在课堂上助教。它需要

bcs = riversim.t_BoundaryConditions()
现在

导致

Traceback (most recent call last):
  File "./test.py", line 10, in <module>
    bcs[1] = bc
TypeError: Invalid assignment

我不知道你为什么转发这个问题。我看到你在老帖子上的评论,我会给它一个回复look@sehe它已经关闭,我发布了一个新的,上面有你的建议。问题离我要找的地方太远了。注意:无法使用此
bcs[1]修改地图中的对象.value=1
只是这是一种修改方式:
a=bcs[1];a.value=1;bcs[1]=a
是的,我也走错了路。如果你想翻译“引用语义”,不要禁用值代理(这就是
map\u索引套件
上的
no\u proxy
参数所做的)。只需删除第二个参数,或传递
false
而不是
true
Traceback (most recent call last):
  File "./test.py", line 10, in <module>
    bcs[1] = bc
TypeError: Invalid assignment
bcs[1] = bc()
bcs[2] = riversim.BoundaryCondition()