编译器无法识别朋友功能

拉斯科

无法识别朋友功能

#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; }
}

或将对象实例作为参数添加到friend函数中:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

编译器无法识别架构

Cmake无法识别MSVC编译器

编译器无法识别定义的类型

为什么编译器无法识别我的return语句?

为什么编译器无法识别元模型属性?

Android Studio编译器无法识别GraphicOverlay类

为什么我的编译器无法识别“ Bond()= default;”?

编译器无法识别模板化类

为什么编译器无法识别Google Mock通配符?

如果声明是接口,则编译器无法识别通用属性

编译器无法识别@import SCSS 文件?

C编译器无法识别unsigned long

-mimplicit-it编译器标志无法识别

gcc编译器无法识别-fno-plt选项

TypeScript编译器无法识别导出的类

Scala 编译器无法识别尾递归

为何编译器无法推断出此功能模板?

编译致命错误:无法运行 ecj 编译器:无法识别的选项:--module-version

CUDA编译器警告有关无法识别的GCC编译指示

与朋友而不是向前声明的类:哪个编译器正确

编译器无法识别std :: vector的成员初始化器

默认参数位置中的Lambda无法访问朋友成员。这是编译器错误吗?

Typescript 编译器无法识别对象条目可能不存在

编译器无法识别龙目岛返回一个适合覆盖方法

设备树编译器无法识别包含文件的C语法

类继承:编译器无法识别的类的构造函数和成员函数

为什么我的编译器无法识别#include <thread>(c ++)?

编译器无法将私有扩展中的方法识别为私有

Angular2编译器CLI无法识别[ngClass]或* ngIf