【问题标题】:gcroot Collection - element accessgcroot Collection - 元素访问
【发布时间】:2011-09-19 20:51:11
【问题描述】:

我正在搭建从 .NET 到 C++ 的桥梁,并将 Collection 用作这样的公共元素:

gcroot<System::Collections::ObjectModel::Collection<BModel::Device ^> ^> Devices;

我使用 gcroot 是因为我的 c++ 类不受管理(它是 MFC),但我无法访问它。当我在做的时候:

Devices[x]->devicename

我有错误:

错误 6 错误 C2676: 二进制 '[' : 'gcroot' 没有定义这个 运算符或转换为预定义可接受的类型 运营商

所以我想我必须以某种方式访问​​集合元素,但不能使用这个括号:[]

那么如何访问 gcroot clr 集合元素呢?

【问题讨论】:

    标签: .net c++ collections c++-cli command-line-interface


    【解决方案1】:

    虽然成员访问运算符 -&gt; 被重载,但看起来好像下标运算符 [] 没有,请先解开 gcroot

    using namespace System::Collections::ObjectModel;
    Collection<BModel::Device ^> ^d = Devices;
    d[0] //... this should work
    

    上面表示一个隐式转换(这就是为什么你不能使用auto)。如果需要单行,可以使用static_cast

    static_cast<Collection<BModel::Device ^> ^>(Devices)[0];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 2013-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多