代码之家  ›  专栏  ›  技术社区  ›  remi

在C++/CLI中实现C接口函数返回数组

  •  1
  • remi  · 技术社区  · 6 年前

    我有一个C++/CLI项目,它引用了一个C*yDLL,并且我需要实现一个接口类。

    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 返回A double[] 我以为这会 翻译 到A double* 在C++中,但情况似乎并非如此。

    如何正确实现C++中返回数组的C++成员函数?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Tanveer Badar    6 年前

    如上所述,在c++/CLI中必须使用类型 array<T>^ 代替可能的 T[] 在C语言中。