胡说八道

学而不思则罔,思而不学则殆

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
这次还是CSDN上的帖子的问题:
 重载operator&之后

 一个类A重载了operator&,然后对于它的一个对象aaa,&aaa就成了去调用这个成员函数了。但现在我想取aaa的地址,自么办?
 另:这个类我没办法修改。

 我的做法是:  中间层
 template<typename T>
 T* GetPoint(T& t)
 {
  class Point: public T
  {
   int tt;
   T* GetAddress(T* t)
   {
    return t;
   }
  public:
   T* operator&()
   {
    return GetAddress(this);
   };
  };
  return (static_cast<Point&>(t)).operator&(); 
 };

 我对C++标准不是很熟悉,不知道T* GetAddress(T* t)能否正确的将this转成T*而做到和编译器无关?我觉得应该是。

 如果你有什么好的做法,告诉我知道,拜托了.

posted on 2004-12-29 11:36  胡说八道  阅读(672)  评论(1)    收藏  举报