鱼油你好,关于你的代码问题,似乎你想了解如何使用友元函数。在 C++ 中,友元函数是可以访问类的私有成员的函数。以下是对你提供的代码进行完善的一种方式:
### Compute 类定义(Compute.h)#pragma once
#include "string"
#include "ComputerService.h"
using namespace std;
class ComputerService;
class Compute {
public:
Compute();
string description();
private:
string cpu;
friend void ComputerService::upgrade(Compute* compute);
};
### Compute 类实现(Compute.cpp)#include "Compute.h"
#include <sstream> // 需要包含 sstream 头文件
#include "ComputerService.h"
Compute::Compute() {
this->cpu = "i7"; // 构造函数初始化 cpu 为 "i7"
}
string Compute::description() {
stringstream ret;
ret << "CPU: " << cpu;
return ret.str();
}
### ComputerService 类定义(ComputerService.h)#pragma once
#include "Compute.h"
class ComputerService {
public:
void upgrade(Compute* compute);
};
### ComputerService 类实现(ComputerService.cpp)#include "ComputerService.h"
void ComputerService::upgrade(Compute* compute) {
if (compute) {
compute->cpu = "i9"; // 升级 CPU
}
}
### 主函数(main.cpp)#include <iostream>
#include "Compute.h"
#include "ComputerService.h"
int main() {
Compute myComputer;
ComputerService service;
std::cout << "Before upgrade: " << myComputer.description() << std::endl;
service.upgrade(&myComputer);
std::cout << "After upgrade: " << myComputer.description() << std::endl;
return 0;
}
### 编译与执行
确保所有文件放在同一个项目目录下并编译运行。你将看到类似如下输出:Before upgrade: CPU: i7
After upgrade: CPU: i9
希望这些解释和代码改进能帮你理解 C++ 中的友元函数用法!如果有其他问题,欢迎继续提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |