böyle kod yok:Erişim arkadaşı fonksiyon sınıfında tanımlanan
#include <iostream>
class A{
public:
friend void fun(A a){std::cout << "Im here" << std::endl;}
friend void fun2(){ std::cout << "Im here2" << std::endl; }
friend void fun3();
};
void fun3(){
std::cout << "Im here3" << std::endl;
}
int main()
{
fun(A()); // works ok
//fun2(); error: 'fun2' was not declared in this scope
//A::fun2(); error: 'fun2' is not a member of 'A'
fun3(); // works ok
}
Nasıl erişmek için fonksiyon FUN2()? Eğer fun
arayabilir
+1: İyi formüle edilmiş soru. –
Boost'un akıllı işaretçisinde bu tür bir kodu görüyoruz: intrusive_ptr, bu bana ne olması gerektiğini ilk yapmamı sağladı. Benim için bu şekilde tanımlamak, kapsam içinde bir arkadaş tanımlamak ve sınıf kapsamı beyanında arkadaş olarak prototip olarak işaretlemek daha mantıklı değil.Genel ad alanında – Gabriel