| 发表于:2007-04-11 13:42:04 楼主 |
以前用标准c++时写了一些算法,现在我把它们拷贝到.net的c++类工程里重新编译; 然后再用c#调用;但在c#调用时,发现c++的类都提示成了结构体,不能访问构造函数和其它类方法; 有什么好的解决办法没有?是不是必须得重新写? 以下是c++工程里的一个.h文件 #ifndef gmathh #define gmathh #include <iostream> #include <string> #include <list> #include <exception> #include <cmath> //--------------------------------------------------------------------------- using namespace std; public class tcurvenh { public: //问题:进行拟合前是否要将数据点按x的值进行排序? tcurvenh(const double* x,const double* y,const int n,const int m):x(x),y(y),n(n),m(m){}; //取得拟合结果(返回结果多项式) tpolynomial getresult(); private: //原始数据(不允许修改) const double* x; const double* y; const int n; const int m; //计算参数d double cald(const tpolynomial& p); //计算参数a double cala(const double d,const tpolynomial& p); //计算参数b double calb(const double d0,const double d1)const { return d1/d0;} //计算参数c double calc(const double d,const tpolynomial& p); //多项式迭代 //ah为前一项的多项式 //bh为前二项的多项式 //ch为当前要求的多项式 //result为最终结果多项式 tpolynomial nextnhpolynomial(const tpolynomial& ah,const tpolynomial& bh,tpolynomial& result); }; #endif 这是在c#工程里使用c++里定义的类,但不能这样定义该类,鼠标放在tcurvenh上提示:struct tcurvenh; 而且按无参数可以new tcurvenh,可找不到任何方法; public partial class form1 : form { public form1() { initializecomponent(); } private void form1_load(object sender, eventargs e) { double[] x = new double[20]; double[] y = new double[20]; int pointn = 20; int nh_jn = 2; tcurvenh c = new tcurvenh(x, y, pointn, nh_jn); } } |
|
|
|
|