[英]can't access member even after making a member function a friend
在下面的代碼中,如果我使College
類成為University
類的朋友,則可以訪問University
類的私有屬性。 但是在College
班上,我只希望打印功能訪問這些私有屬性。 因此,我僅以College
同學的print
功能為好友,但這似乎不起作用。 我想念或做錯什么是什么?
錯誤:無法訪問University
課程的名稱私有屬性。
#include <iostream>
//class college;
class University{
//friend class college; // Works fine
friend void College::print(University &ob); // doesn't work
public:
University() = default;
University(int i, char *n) : buildings{ i }, name{ n } {}
private:
int buildings;
char *name;
};
class College{
public:
void print(University &ob){
std::cout << "I am a part of " << ob.name; // <-----------
}
};
int main()
{
University first{ 2000, "Mit" };
College c;
c.print(first);
return 0;
}
為了使用
friend void College::print(University &ob);
College
類的定義必須可見。
class University;
class College{
public:
void print(University &ob);
};
class University{
//friend class college; // Works fine
friend void College::print(University &ob);
public:
University() = default;
University(int i, char *n) : buildings{ i }, name{ n } {}
private:
int buildings;
char *name;
};
void Collelge::print(University &ob){
std::cout << "I am a part of " << ob.name; // <-----------
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.