繁体   English   中英

编译器无法识别朋友功能

[英]Compiler doesn't recognize friend function

无法识别朋友功能

#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个membervariables(带有friend函数!)

实际结果:朋友功能“添加”未被识别为类成员

(错误消息:错误:“类你好”没有名为“添加”的成员)

add()中的a和b也无法识别。 (明显)

这不是朋友功能的工作方式。 朋友功能是普通功能(不是成员功能),这意味着它不与特定的对象实例关联。 它和非朋友功能之间的唯一区别是,允许​​朋友访问与之成为朋友的班级的私人成员。

如果希望能够访问特定对象实例的成员,则应该使用成员函数而不是朋友函数:

class hello {
    int a, b;
public:
    int add() { return a + b; }
}

或将对象实例作为参数在Friendly函数中:

int add(const hello& instance) {
    return instance.a + instance.b;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM