我正在使用一个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/

10-15 12:23