日期:2014-05-19  浏览次数:20970 次

.NET2005中:C#与C++的一个多工程解决方案中,为什么C#使用C++类时全成了struct
我的解决方案有两个工程,一个是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

------解决方案--------------------
public ref class TCurveNH

------解决方案--------------------
非托管类,C#几乎无法使用

------解决方案--------------------
寒.... c#和c++ 混着搞什么
------解决方案--------------------
c++ 做成com
C#通过添加因用来调用

or

c++ 做成dll
c# 通过dllimport 引入调用