C++一个类中成员函数中计算出来的值如何在其他类调用 5C

如题,成员函数为对图像进行处理的函数,但在这个函数中计算了图像的均方差,如何在其他类中也使用这个值。尝试过在这个类添加变量,但是显示对非静态成员的非法调用。

14个回答

A.h
/*******************************/
class A
{
public:
A();
~A();

public:
static int m_nData;
void CalData(int a, int b);
};
/*******************************/

A.cpp
/*******************************/
#include "stdafx.h"
#include "A.h"

A::A()
{
}

A::~A()
{
}

void A::CalData(int a, int b) //你的计算函数
{
m_nData = a + b;
}
/*******************************/

B.h
/*******************************/
class B
{
public:
B();
~B();

public:
int GetTheData();
};
/*******************************/

B.cpp
/*******************************/
#include "stdafx.h"
#include "B.h"
#include "A.h"

B::B()
{
}

B::~B()
{
}

int A::m_nData = 0;

int B::GetTheData()
{
A a;
return a.m_nData;
}
/*******************************/

test.cpp测试
/*******************************/
#include "stdafx.h"
#include
#include "A.h"
#include "B.h"

using namespace std;

int main()
{
A a;
a.CalData(1, 2);
B b;
int n = b.GetTheData();
cout << n; //输出值为3
return 0;
}
/*******************************/

假设想在类A里调用类B的函数int f(x),两种办法: 1、class A::B 也就是说将B定义为A的父类, 这样就可以自然的在A里面用f(x)了 2、class A{ B B_ins; int g(x); } int g(x) { return B_ins.f(x) } 也就是说可以在A里面使用一个B的对象作为成员变量,这样就可以用他的函数了。

lizhongyu
仲宇 回复张天哲: 使用时传对象指针或者对象,另外在图像处理类中增加pubilc的获取值方法
接近 2 年之前 回复
amilhy
amilhy 回复张天哲: 用一个全局变量记录下计算结果,然后在需要使用的地方引入就可以了
接近 2 年之前 回复
qq_36892062
张天哲 我不是想调用这个函数,是想调用这个函数中计算出来的某个者,这个函数返回的是一个图像数组。我想在另一个对话框类中调用这个函数中计算出来的一个值
接近 2 年之前 回复

非静态成员需要先实例化:
class A
{
public:
void foo();
}

在另一个类
A a;
a.foo(); //而不是A.foo();

具体你可以把代码贴出来。

说什么B从A继承的,真是胡扯。

看样子你是在一个静态函数里调用了这个非静态变量

观察者模式,数据使用者继承数据产生观察者,重载纯虚函数实现数据回调

fuckguidao
fuckguidao 能具体说说吗
接近 2 年之前 回复

不要忘了int A::m_nData = 0;

写一个单例,把计算结果存到单例里,另一个类从单例里取值。这样能行不?

1、对图像进行处理的函数声明为静态或者单例 2、把图像处理的对象传递到调用的类

继承基类就可以了。基类声明时为public,

共14条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!