我正在使用一个DLL,该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,则其中包含垃圾
最佳答案
这可能是由于idx
是装箱的Int32
而不是int
的事实。您可以使用
int idx = safe_cast<int>(ticks->Tag["contract"]);
给unbox这个数字。
关于c++ - 访问命名索引属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18381819/