У меня есть класс внутри пространства имен, и этот класс содержит приватную функцию. И есть глобальная функция. Я хочу, чтобы эта глобальная функция была другом моего класса, который находится внутри пространства имен. Но когда я делаю это как друг, компилятор думает, что функция не является глобальной, и она находится внутри этого пространства имен. Поэтому, если я пытаюсь получить доступ к закрытой функции-члену с помощью глобальной функции, она не работает, тогда как, если я определяю функцию с тем же именем в этом пространстве имен, она работает. Ниже приведен код, который вы видите.
#include <iostream>
#include <conio.h>
namespace Nayan
{
class CA
{
private:
static void funCA();
friend void fun();
};
void CA::funCA()
{
std::cout<<"CA::funCA"<<std::endl;
}
void fun()
{
Nayan::CA::funCA();
}
}
void fun()
{
//Nayan::CA::funCA(); //Can't access private member
}
int main()
{
Nayan::fun();
_getch();
return 0;
}
Я тоже пытался подружиться как
друг void :: fun ();
И это тоже не помогает.