2016-03-24 24 views
1

Sadecead alanı öneki

bu düşünün i kendisi ad içinde bildirilen bir işlev içinde ad önüne eklemeniz gerekmez bir durumda geçti beni gerçekten şok etmiyor, ama biraz anlayışa sahip olmak isterim: neden gerçekten çalışıyor? Açıkçası burası koenig araması değil. Ben bu temel vasıfsız arama olan VS 2013

+0

içeride Çünkü 'fs()' – DimChtz

+3

sana ne fTest şaşırtan ::? Bir isim alanındaki işlevler, aynı ad alanı içindeki her şeye erişebilir (bir sınıftaki işlevler sınıftaki üyelere erişebilir). Bu kendini açıklayıcıdır. Yoksa Standard'dan bir teklif mi istiyorsun? – SergeyA

+0

tamam, bunu bile bilmiyordum, bu yüzden mantıklı. ve evet, standart – Romain227

cevap

3

kullanıyorum

. İlgili kural [basic.lookup.unqual] içinde:

ad N (üyesidir işlevin Bildiricisi-id izleyen bir fonksiyonun tanımında kullanılan bir isim nerede, sadece fuar amacıyla, N temsil edebilir Küresel kapsam), kullanılan blokta kullanılmadan önce veya kapama bloklarından (6.3) veya , N ad alanı kullanımından önce veya N iç içe geçmiş bir ad alanıysa, bildirilmelidir. , N 'un şifrelerinden birinde kullanılmadan önce beyan edilmelidir. İsim alanlarını kaybetmek. [Örnek:

namespace A { 
    namespace N { 
     void f(); 
    } 
} 

void A::N::f() { 
    i = 5; 
    // The following scopes are searched for a declaration of i: 
    // 1) outermost block scope of A::N::f, before the use of i 
    // 2) scope of namespace N 
    // 3) scope of namespace A 
    // 4) global scope, before the definition of A::N::f 
} 

-end örnek]