在使用另一个类"friend"函数时无法发现错误C++
Can't spot the mistake in using "friend" function of another class C++
是的,我知道private
修饰符是为了禁止访问类数据
而创建的,但friend
不是为了允许对它的特殊访问吗?
编译器:
main.cpp:在成员函数 'void C::blah(B&(' 中: main.cpp:48:26: error: 'int B::a' 在此上下文
中是私有的 std::cout <<obj.a <<std::
endl;
下面的所有内容都按照许多教程中的方式实现。
也许这只是我犯的一个愚蠢的错误,并且对发现视而不见。
class C;
class B {
private:
int a = 2;
public:
friend void blah(B& obj);
};
class C {
public:
void blah(B& obj) {
std::cout << obj.a << std::endl; //*
}
};
*会员B::a无法访问
您正在声明一个名为blah
的非成员函数,但不是C::blah
friend
。
您可以将代码更改为以下内容,并记下声明和定义的顺序。
class B;
class C {
public:
void blah(B& obj);
};
class B {
private:
int a = 2;
public:
friend void C::blah(B& obj);
};
void C::blah(B& obj) {
std::cout << obj.a << std::endl;
}
住
相关文章:
- CTest 项目目录.未发现任何测试
- 请发现它在 dev 中工作的错误,但在 hackerrank 中不起作用
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- Nanoflann发现邻居提出段错误
- 我在玩VS2017时发现了一些东西
- 在使用另一个类"friend"函数时无法发现错误C++
- 在一次锻炼测试中发现致命信号11
- Visual Studio 2017 单元测试与 C++ 和 C# 与未发现的C++测试
- 为什么没有发现我的异常
- 我在微控制器STM32F373发现中点亮LED的问题
- 无法发现嵌套的循环错误
- 应由于计算费用而避免对STD的多个调用::发现,否则这是可以接受的情况
- 我在C 初学者中发现了无限的循环问题
- 字符串C :libc abi.dylib:终止未被发现的类型std :: out_of_range:basic
- 奇怪的行为发现了 c++ sdl2
- 在一个文件中定义多个类时,我发现我的主函数无法访问较低类中的函数
- 联合发现形状是在一侧还是另一侧
- 当我使用py 生成时,然后在macOS上boost.python包装器时,我会发现有关std :: string的错
- 如何在使用和无发现的情况下使用和不使用的字符串向量搜索元素
- 发现Cmake是通过SDK工具安装的