c++ - 编译器无法识别友元函数
问题描述
无法识别好友功能
#include <iostream>
#include <cmath>
class hello {
private:
int a, b;
public:
hello(int a, int b) {
this->a = a;
this->b = b;
}
friend int add();
};
int add() {
return a + b;
}
int main() {
hello number(1, 2);
std::cout << number.add();
}
预期:它应该添加类 hello 的 2 个成员变量(使用朋友函数!)
实际结果:友元函数“add”未被识别为类成员
(错误消息:错误:'class hello'没有名为'add'的成员)
add() 中的 a 和 b 也无法识别。(明显地)
解决方案
这不是朋友功能的工作方式。友元函数是一个普通函数(不是成员函数),这意味着它不与特定对象实例相关联。它与非好友函数之间的唯一区别是允许好友访问与他们成为好友的类的私有成员。
如果您希望能够访问特定对象实例的成员,您应该使用成员函数而不是友元函数:
class hello {
int a, b;
public:
int add() { return a + b; }
}
或将对象实例作为朋友函数中的参数:
int add(const hello& instance) {
return instance.a + instance.b;
}
推荐阅读
- sql - 在 postgresql 中使用 Varchar 和 Char 数据类型的“between”运算符
- c# - 如何计算给定四元数旋转和指定轴的角度?
- java - 分区标签问题的空间复杂度
- dart - 如何以编程方式更改其子项中 main.dart AppBar 的标题?
- php - PHP获取整个字符串而不是URL中的单个参数
- r - 将base和ggplot图形合并到图形设备的子图形中
- azure - ADConnect 同步移动规则
- html - Chrome 的“保存密码”功能将用户名放在不相关的字段中
- python - 如何在 Python 中创建不同大小的滑动窗口?
- php - 如何修复 Uncaught SyntaxError: Unexpected token :