Как вызвать приватную функцию через функцию друга?


Здравствуйте, я пытаюсь получить доступ к закрытой функции-члену Gtest. Код выглядит примерно так же. Итак, как я могу получить доступ к static void Pri_fun?

using namespace std;
class test{

};
class abc{
public:
    friend class test;
private:
    static void Pri_fun()
        {
        cout << "private fun called n";
        }
};
int main()
{
    abc ab;
    test *abd;
    abd->Pri_fun();
}
1 2

1 ответ:

Поскольку это статическая функция, вы должны обращаться к ней через имя класса:

abc::Pri_fun();

Однако вы должны создать вызывающую функцию или вызвать ее из конструктора класса friend:

class test{
public:
    void foo() 
    {
        abc::Pri_fun();
    }
};

Или

class test{
public:
    test() 
    {
        abc::Pri_fun();
    }
};