【发布时间】: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 太好了,看起来效果很好,谢谢。 (如果您做出回答,我会接受它作为解决方案)。
-
也作为答案发布。