胡说八道

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

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
在CSDN上回了一个关于class template convert operator的函数指针的贴子,简单的说是这样的:
 class A
 {
  public:
     template<typename T>
     operator T*()
     {
   return new T(100);
     }

 };

 现在我想获得A::operator int*的函数指针,我该怎么做?

 我用了中间层来完成获得函数指针的操作
 template<typename P,typename T>
 class GetAddress
 {
  typedef T* (P::*point)();
  point m_point;
 public:
  GetAddress()
  {
   m_point=&(P::operator T*);
  }
  point GetPoint()
  {
   return m_point;
  }
 };

 typedef int* (A::*q)();
 q j=reinterpret_cast<q>(GetAddress<A,int>().GetPoint());

 接下来的是如何直接获得这样的函数指针(上面用了间接层)?我没有办法。

 如果你有办法,请告诉我,谢谢了。

 
 <<
 看了csdn上面的
 回复,看来应该是编译器的问题了,可以直接使用&A::operator int*;来获得地址。
 PS:看样子以后得多装些编译器,不能一棵树上吊死。
 >>

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