我想知道是否有办法从类外访问私有成员。我来解释一下我的问题。
我有一个.hpp文件,其中包含类的定义以及其私有成员和公共函数(我只想导出公共函数)。在相应的.cpp文件中,我必须使用一些“支持”函数来访问.hpp中定义的类的私有成员。
以下是我代码的部分内容:
--- .hpp ---
我需要的是这三个函数能够访问到 CameraAcquisition 类的成员变量。有什么办法可以实现吗?欢迎提出建议。谢谢大家。
编辑 很抱歉,我在这里忘记了一项重要信息。在源文件中,findBall() 必须调用这些方法。我定义这些方法是为了使代码更易读。我不能在类定义中声明这些方法,因为我不想导出它们。 如果我将它们声明在“private”块中,则一切正常,但可能并不正确(我不认为提供一个带有私有方法的头文件有意义)。
我有一个.hpp文件,其中包含类的定义以及其私有成员和公共函数(我只想导出公共函数)。在相应的.cpp文件中,我必须使用一些“支持”函数来访问.hpp中定义的类的私有成员。
以下是我代码的部分内容:
--- .hpp ---
namespace vision {
class CameraAcquisition {
/* MEMBERS */
CvSize size;
CvCapture *device;
CvScalar hsv_min,hsv_min2,hsv_max,hsv_max2;
/* METHODS */
public:
CameraAcquisition();
~CameraAcquisition();
int findBall();
};
}
--- .cpp ---
#include "CameraAcquisition.hpp"
using namespace vision;
IplImage *grabFrame() {
// code here
}
IplImage *convertToHSV(IplImage *origin) {
// code here
}
IplImage *calculateThresholdedImage(IplImage *converted) {
// code here
}
我需要的是这三个函数能够访问到 CameraAcquisition 类的成员变量。有什么办法可以实现吗?欢迎提出建议。谢谢大家。
编辑 很抱歉,我在这里忘记了一项重要信息。在源文件中,findBall() 必须调用这些方法。我定义这些方法是为了使代码更易读。我不能在类定义中声明这些方法,因为我不想导出它们。 如果我将它们声明在“private”块中,则一切正常,但可能并不正确(我不认为提供一个带有私有方法的头文件有意义)。