C++一个是结果类,一个是工具类,如何通过友元,使结果类的对象直接获取工具类的私有变量,举例说明?
时间: 2024-10-26 10:02:41 浏览: 7
练习题(含答案)_c++oj答案_c++类oj习题_
5星 · 资源好评率100%
在C++中,为了使结果类(ResultClass)能够访问工具类(ToolClass)的私有变量,可以通过声明工具类为结果类的友元(Friend)。友元允许一个类访问另一个类的私有成员,即使它们之间没有继承关系。
首先,定义工具类(包含私有变量`privateVariable`):
```cpp
class ToolClass {
public:
int privateVariable;
// 其他公共方法...
// 友元声明
friend class ResultClass;
};
```
然后,定义结果类并使用友元访问工具类的私有变量:
```cpp
class ResultClass {
public:
// 构造函数或某个方法
explicit ResultClass(const ToolClass& tool) : tool_(tool) {}
// 直接访问工具类的私有变量
int getPrivateVariable() const {
return tool_.privateVariable;
}
private:
ToolClass tool_; // 工具类的对象
};
```
这样,创建`ResultClass`对象时传入`ToolClass`实例,结果类就可以直接访问其私有变量了:
```cpp
int main() {
ToolClass tool;
tool.privateVariable = 42; // 设置私有变量
ResultClass result(tool);
std::cout << "Private variable: " << result.getPrivateVariable() << std::endl;
return 0;
}
```
阅读全文