首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于 using, 请指点一下.解决方案

2012-02-07 
关于 using, 请指点一下.1.比如说:namespacemy_namespace{classmy_class{public:voidswap(my_class&other)

关于 using, 请指点一下.
1.

比如说:
namespace   my_namespace   {
    class   my_class   {
    public:
        void   swap(my_class   &   other)   {
            using   std::swap;                 //   这个工作的很良好.
            using   std::operator   < <;   //   这个地方怎么写?
            //   ....
        }
    };
}

对   operator   能使用   using   吗?   怎么写呢?

2.

std::for_each(a.begin(),   a.end(),   std::ptr_fun(   std::operator   delete   )   );

上面,   std::ptr_fun(   std::operator   delete   )   怎么写呢?


[解决办法]
(1)那个一般不用写,编译器确定一个函数时,不只看当前的namespace,还会看参数所在的namespace,因此,只要你operator < <的左操作数是std::ostream类型的,编译器就可以顺利找到std中相应的operaotr < <,从面完成函数名解析。

(2)这个问题是无法这样直接解决的,你只能自己封装一个函数来调用delete。因为delete不同于operator delete。前者是个关键字,其作用是先调用相应的析构,再调用后者。
而C++允许我们做为操作符来重载(从而也可以用operator的函数形式来调用的)仅仅是后者。而对于前者,那更像是个关键字,就像你无法用operator语法使用“for”这个关键字一样,你也不能通过某种语法使用自动调用析构函数delete关键字。

热点排行