C++一个结果类,一个运行类,结果类如何设置友元函数,可以访问运行类的私有变量呢?写一个完整的示例代码
时间: 2024-10-25 14:07:55 浏览: 29
在C++中,结果类和运行类可以分别使用不同的方式来实现。结果类通常用于存储和处理数据,而运行类则用于执行某些操作。为了能够访问运行类的私有变量,可以使用友元函数来实现。
以下是一个示例代码,展示了如何使用结果类和运行类,以及如何设置友元函数来访问运行类的私有变量:
```cpp
#include <iostream>
#include <string>
// 定义结果类 Result
class Result {
public:
Result(const std::string& data) : m_data(data) {}
// 设置友元函数
friend void run(Result& result);
private:
std::string m_data;
};
// 定义运行类 Runner
class Runner {
public:
void run() {
std::cout << "Result: " << m_result.m_data << std::endl;
}
private:
Result m_result; // 私有变量
};
// 设置友元函数
void run(Result& result) {
// 在这里可以访问私有变量 m_result.m_data
// 这里只是简单地打印变量的值
std::cout << "Accessing private variable: " << result.m_data << std::endl;
}
int main() {
Result result("Hello, world!"); // 创建一个 Result 对象并初始化数据
Runner runner; // 创建一个 Runner 对象
runner.m_result = result; // 将 Result 对象赋值给 Runner 对象的 m_result 变量
run(runner.m_result); // 通过友元函数 run 访问私有变量 m_result.m_data
return 0;
}
```
在上面的代码中,我们首先定义了一个结果类 `Result`,它有一个私有成员变量 `m_data`,并使用友元函数 `run()` 来访问它。然后,我们定义了一个运行类 `Runner`,它有一个私有成员变量 `m_result`,并使用 `Result` 类型的对象来初始化它。最后,我们通过将 `Result` 对象赋值给 `Runner` 对象的 `m_result` 变量,并将结果传递给友元函数 `run()` 来访问私有变量 `m_result.m_data`。注意,为了能够访问私有成员变量,我们需要将友元函数声明为类的成员函数,或者通过引用来传递类对象。在上述代码中,我们选择了通过引用来传递类对象。
阅读全文