请看如下代码:
namespace myabs
{
void abs( int x )
{
::printf( "myabs\n" );
}
}void func( void )
{
using namespace myabs;
abs( -1 );//这里编译出现ambiguity
//myabs::abs( -1 );//如果换成此句就可以,为什么?
}
void main( void )
{
int i;
func( );
i = ::abs( -1 );
printf( "%d", i );
}哪位解释一下,用namespace不就是用来解决ambiguity的么,怎么用using namespace反倒有ambiguity了那
namespace myabs
{
void abs( int x )
{
::printf( "myabs\n" );
}
}void func( void )
{
using namespace myabs;
abs( -1 );//这里编译出现ambiguity
//myabs::abs( -1 );//如果换成此句就可以,为什么?
}
void main( void )
{
int i;
func( );
i = ::abs( -1 );
printf( "%d", i );
}哪位解释一下,用namespace不就是用来解决ambiguity的么,怎么用using namespace反倒有ambiguity了那
解决方案 »
- listbox 控件不派生类的情况下如何响应右键单击选中
- 关于_variant_t和_bstr_t 的问题!!
- [问题]用SOCKET发送get消息到一个网站,出现400错误
- 高分请教CListCtrl的Custom Draw问题。
- 关于 DirectShow ?(100个大洋,不够可以再加!!!)
- 请各位高手帮帮小弟。。。
- 小妹初学编程,现在用递归的方法写了个迷宫程序,可总有问题?望大家多多指教 (100分)
- PostThreadMessage内部对POST消息队列的操作是原子操作吗
- 怎么样在C++接收'\n'然后跳出循环
- 有程序换皮肤的例子吗??
- 谈谈关于工作的事情(当然有分拿)
- 如何根据当前的系统时间获取诸如30天的时间,或10天后的时间,有没有简便的方法?
abs( -1 );//这里编译出现ambiguity
这里不只有myabs;;abs可见。
std也可见了。
using namespace myabs这条语句的意思是把myabs这个namespace当成全局的来进行查找。所以自然会有那个提示了。
>>用namespace不就是用来解决ambiguity的么
确实是这样啊,
>>//myabs::abs( -1 );//如果换成此句就可以,为什么?
不正说明了这一点么。
你这么用肯定不会有ambiguity的。
解决资源命名冲突,从特定的命名空间调用
在c++编程思想里讲到了
thinking c++