2017-09-17 199 views
1

在文件中存在匿名命名空間和命名命名空間。匿名命名空間有一些內部函數不應該公開,命名空間有一些需要訪問的重載函數。從匿名命名空間調用命名命名空間中的函數

//test.cpp 

namespace 
{ 
void func() {} 
void crazy() 
{ 
    func(a); 
} 
} 

namespace useful 
{ 
void func(int a) 
{ 
    //something 
} 
} 

有人可以建議我如何訪問它下面寫的命名命名空間?可以從匿名命名空間訪問命名命名空間的函數嗎?

+1

你聲明'有用:: FUNC(INT)'? – wally

+1

函數':: crazy()'需要在'useful :: func()'聲明之後定義,而不是之前。 – Peter

+0

謝謝,我認爲還有更好的辦法。 –

回答

1

在使用前和定義,您可以在相關的命名空間聲明:

//test.cpp 

namespace useful { 
void func(int); 
} 

namespace 
{ 
void func() {} 
void crazy() 
{ 
    useful::func(3); 
} 
} 

namespace useful 
{ 
void func(int a) 
{ 
    //something 
} 
}