göre 7.3.1.2 için ad alanı üyesi tanımları 14882: 2003 (E)C++ İleri Deklarasyonu ve ad alanında Dostluk C++ Standart ISO/IEC
öncelikle bir ad alanında bildirilen her isim o ad üyesidir . Yerel olmayan bir sınıfta bir arkadaş bildirimi ilk olarak bir sınıfı veya işlevi bildirir (bu, sınıfın adını veya işlevinin niteliksiz olduğunu gösterir) arkadaş sınıfı veya işlevi en içteki kapsayıcı ad alanı olan öğesinin üyesidir.
void h(int);
yana
// Assume f and g have not yet been defined.
void h(int);
template <class T> void f2(T);
namespace A {
class X {
friend void f(X); // A::f(X) is a friend
class Y {
friend void g(); // A::g is a friend
friend void h(int); // A::h is a friend
// ::h not considered
friend void f2<>(int); // ::f2<>(int) is a friend
};
};
// A::f, A::g and A::h are not visible here
X x;
void g() { f(x); } // definition of A::g
void f(X) { /* ... */} // definition of A::f
void h(int) { /* ... */ } // definition of A::h
// A::f, A::g and A::h are visible here and known to be friends
}
ilk genel ad alanında bildirilmiş, bu genel ad üyesidir. class Y
numaralı telefondaki friend void h(int);
arkadaş bildirimi neden ::h
yerine A::h
mu?
Sadece X sınıfında boş bir arkadaş ilan ediyorsunuz. Eğer başka bir şey yaptıysa endişelenirdim. void h (int) Daha önce bildirilenler globaldir ama Y açıkça A adındadır. – Jay