我的解决方案有两个工程,一个是C#的工程,一个是C++的类工程;
首先我将C++工程引入C#工程,然后在生成C++工程里定义的类,但是C++里定义的类成了struct,不能使用方法了;但在对象浏览器里可以查到C++里的类,而且方法也都是public的;是什么原因呢?
以下是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

解决方案 »

  1.   

    这是在C#工程里使用C++里定义的类,但不能这样定义该类,鼠标放在TCurveNH上提示:structTCurveNH;  而且按无参数可以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);
               
            }
        }
      

  2.   

    public ref class TCurveNH
      

  3.   

    将类的定义改为:public ref class TCurveNH之后,我用标准C++写的类似以下语句都报错:
    const TPolynomial& p
    指针也不能使用了;
      

  4.   

    以前用标准C++时写了一些算法,现在我把它们拷贝到.NET的C++类工程里重新编译;然后再用C#调用;有什么好的解决办法没有?是不是必须得重新写?
      

  5.   

    c++ 做成com 
    C#通过添加因用来调用orc++ 做成dll
    c# 通过dllimport 引入调用