【问题标题】:Implement C# interface function returning array, in C++/CLI在 C++/CLI 中实现 C# 接口函数返回数组
【发布时间】:2018-07-18 07:19:48
【问题描述】:

我有一个引用 C# dll 的 C++/CLI 项目,我需要实现一个接口类。

C#中的接口类是这样的:

public interface IMeshData{
    //(...)        
    INode NodeById(int nodeId);
    double[] NodeXYZById(int nodeId);
}

在C++项目中我可以实现这个接口:

public ref class IMeshData_class : public IMeshData{

public:
    //this one is accepted:
    virtual INode^ NodeById(int nid){
        return this->NodeById(nid);
    }
    //this one gives me an error:
    virtual double*  NodeXYZById(int nid){
         return this->NodeXYZById(nid);
    }
}

当我第一次在上面定义没有任何成员函数的类时,我得到了错误:

错误:类未能实现接口成员函数“IMeshData::NodeById”(在(...).dll中声明)

所以在定义函数NodeById之后,这个错误就消失了,我得到:

错误:类未能实现接口成员函数“IMeshData::NodeXYZById”(在(...).dll中声明)

NodeXYZById 返回一个double[],我认为这会在 C++ 中翻译double*,但似乎并非如此。

我应该如何在 C++ 中正确实现一个返回数组的 C# 成员函数?

【问题讨论】:

  • 我的 C++/CLI 非常生锈了,但我认为有一个 array<double>^ 就是为了解决这个问题。
  • @TanveerBadar 太好了,看起来效果很好,谢谢。 (如果您做出回答,我会接受它作为解决方案)。
  • 也作为答案发布。

标签: c# c++ c++-cli


【解决方案1】:

如上所述,在 C++/CLI 中,您必须使用类型 array<T>^ 来代替 C# 中的 T[]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2015-02-05
    • 2015-07-31
    • 1970-01-01
    • 2013-07-22
    • 2012-06-04
    相关资源
    最近更新 更多