【发布时间】:2019-08-19 17:40:38
【问题描述】:
我正在阅读关于 c++ 中的友谊(我以为我真的理解它),但是当我去源代码在某些课程中尝试它时,我就是无法让它继续下去。我希望能够理解为什么它不起作用。
我已经在这个网站和其他一些网站上进行了一些研究,实际上我发现了一些有效的代码,但我真的看不出我试图实现的逻辑与它有何不同:@987654321 @
struct B;
struct A{
A(int _a): a(_a){}
friend void B::showA(A&);
private:
int a;
};
struct B{
void showA(A&);
};
void B::showA(A& _param){
cout << _param.a;
}
我希望函数 void B::showA(A&) 能够访问 A 类的私有成员“a”,但是当我尝试编译我的代码时会产生以下错误:
friendshipninheritance.cpp(10):错误 C2027:使用未定义类型“B”
friendshipninheritance.cpp(5):注意:参见“B”的声明
friendshipninheritance.cpp(21): 错误 C2248: 'A::a': 无法访问私有 在“A”类中声明的成员
friendshipninheritance.cpp(12): 注意:见 'A::a' 的声明
friendshipninheritance.cpp(7):注意:参见“A”的声明
【问题讨论】:
-
"error C2027: use of undefined type 'B'" B。它需要在之前定义
A. -
考虑阅读good C++ book,而不是尝试通过访问随机网站来学习 C++,后者是学习像 C++ 这样复杂的语言的一种非常低效和低效的方式。
-
这个问题的标题相当具有误导性。您的问题只是您在声明 那是什么 之前使用了某些东西 (
B::showA)
标签: c++ class definition friend