【发布时间】:2019-07-05 16:20:28
【问题描述】:
无法识别好友功能
#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 也无法识别。 (显然)
【问题讨论】:
-
这不是朋友功能。友元函数是能够访问类的私有类成员的常规函数。而已。而已。一点也不差。你有:“
int add() { return a+b; }”。什么是“一”?什么是“b”?add()只是一个函数。仅仅因为它是一个友元函数并不能使它成为一个类方法。 -
你知道
friend函数是什么,它和成员函数有什么不同吗?因为您似乎在这里想要成员函数(方法)。考虑从good C++ book 学习而不是随机编码。