如题,成员函数为对图像进行处理的函数,但在这个函数中计算了图像的均方差,如何在其他类中也使用这个值。尝试过在这个类添加变量,但是显示对非静态成员的非法调用。
写一个单例,把计算结果存到单例里,另一个类从单例里取值。这样能行不?
假设想在类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的对象作为成员变量,这样就可以用他的函数了。
非静态成员需要先实例化:
class A
{
public:
void foo();
}
在另一个类
A a;
a.foo(); //而不是A.foo();
具体你可以把代码贴出来。
说什么B从A继承的,真是胡扯。
看样子你是在一个静态函数里调用了这个非静态变量
观察者模式,数据使用者继承数据产生观察者,重载纯虚函数实现数据回调
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;
}
/*******************************/
不要忘了int A::m_nData = 0;
1、对图像进行处理的函数声明为静态或者单例 2、把图像处理的对象传递到调用的类
继承基类就可以了。基类声明时为public,
还是贴出来代码看看吧,如果你说的图像的均方差保存到成员变量里,那么提供一个公开的可访问函数就可以,如果没有变量存储,那么就定义一个然后试一试
这个类添加变量,但是显示对非静态成员的非法调用
改为
在这个类添加静态变量,就可以不需要对象就可以访问了
问题不清晰呀,贴个代码出来问
用static方法将结果保存在static变量里面,通过类名::变量名在别的类里面得到