簡體   English   中英

使成員函數成為朋友后也無法訪問成員

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM