访问命名的索引属性

时间:2013-08-22 13:27:27

标签: c++ properties command-line-interface

我使用的DLL为类提供了一个名为Tag

的命名索引属性

以下C#代码很好用

// create an instance of the class 'ticks'
...

// set tag value to 46 for contract
 ticks.set_Tag("contract",46 );

// get tag value for contract
 int idx = (int)ticks.get_Tag("contract");

我想从C ++ / CLI

中使用它

方法set_Tag和get_Tag不可见

此代码可以正常工作(或至少编译)以设置值

ticks->Tag["contract"] = 46;

但访问该值无法编译

int idx = ticks->Tag["contract"];

error C2440: 'initializing' : cannot convert from 'System::Object ^' to 'int'

如果我强制(强制转换)为int,它包含垃圾

1 个答案:

答案 0 :(得分:1)

这可能是因为idx是一个盒装Int32,而不是int。你可以使用

int idx = safe_cast<int>(ticks->Tag["contract"]);

unbox号码。