2017-09-17 151 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 
} 
}