C++托管类,其成员函数中的参数是该类,报错

八戒入赘云栈洞 2018-12-03 10:48:11
C#调用C++托管类出现not supported by the language的错误。具体过程如下
我首先写了个标准C++类,如下:
//ca.h
#pragma once
class ca
{
public:
double value;
ca(double val);
~ca();
double getBias(ca a);
};
//ca.cpp
#include "stdafx.h"
#include "ca.h"
ca::ca(double val)
{
this->value = val;
}
ca::~ca()
{
}
double ca::getBias(ca a)
{
return this->value - a.value;
}

随后又写了个托管类camanage将ca封装起来,如下
//camanage.h
#pragma once
#include "ca.h"
using namespace System;
namespace manage
{
public ref class camanage
{
private:
ca * pimp;
public:
camanage(double a);
~camanage();
double getBias(camanage am);
};
}
//camanage.cpp
#include "stdafx.h"
#include "camanage.h"

namespace manage
{
camanage::camanage(double a)
{
pimp = new ca(a);
}


camanage::~camanage()
{
}
double camanage::getBias(camanage ca1)
{
return 0;
}
}

编译顺利通过。
然后用C#调用,代码如下:
camanage ca1 = new camanage(1);
camanage ca2 = new camanage(2);
double d = ca1.getBias(ca2);//error 'getBias' is not supported by the language

double d = ca1.getBias(ca2);这句代码会出现 'getBias' is not supported by the language的错误,大神们帮帮忙,看看这个该怎么解决!小弟多谢了先!
...全文
162 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
double getBias(camanage^ am);
  • 打赏
  • 举报
回复
自顶,期待大神驾到
  • 打赏
  • 举报
回复
引用 4 楼 早打大打打核战争 的回复:
double getBias(camanage^ am);
我试了一下,完全正确,非常感谢! 满意结贴!
stherix 2018-12-04
  • 打赏
  • 举报
回复
两者的framework版本是一样的吗
  • 打赏
  • 举报
回复
是一样的,都用的4.0,并且新建类对象是没问题的

7,540

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧