2 qq 36892062 qq_36892062 于 2018.01.07 19:21 提问

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

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

14个回答

caozhy
caozhy   Ds   Rxr 2018.01.07 19:52

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

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

caozhy
caozhy   Ds   Rxr 2018.01.07 19:52

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

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

jacksonfan
jacksonfan   2018.01.07 20:01

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

zhangli00
zhangli00   2018.01.08 14:18

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

fuckguidao
fuckguidao 能具体说说吗
5 天之前 回复
l1300568813
l1300568813   2018.01.08 22:46

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;
}
/*******************************/

l1300568813
l1300568813   2018.01.08 22:59

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

cmycmy4
cmycmy4   2018.01.09 11:03

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

lizhongyu
lizhongyu   2018.01.09 11:53

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

u011637657
u011637657   2018.01.10 15:09

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

shihengzhen101
shihengzhen101   Rxr 2018.01.11 14:49

还是贴出来代码看看吧,如果你说的图像的均方差保存到成员变量里,那么提供一个公开的可访问函数就可以,如果没有变量存储,那么就定义一个然后试一试

共14条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!