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

typedef pair<TObject* eventHandleType> eventType; 为什么编译出现异常呢

2013-07-30 
typedef pairTObject*, eventHandleType eventType为什么编译出现错误呢class TObject{public:TObject(

typedef pair<TObject*, eventHandleType> eventType; 为什么编译出现错误呢



class TObject
    {
    public:
        TObject() { }
         virtual ~TObject() { }
     };

 template <typename RT = void, typename T1 = void, typename T2 = void, typename T3 = void, typename T4 = void, typename T5 = void, typename T6 = void, typename T7 = void, typename T8 = void, typename T9 = void, typename T10 = void>
     class TEvent
     {
     public:
         /**
          * @brief 事件类型定义
          */
 
 typedef RT (TObject::*eventHandleType)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10);
 public: 
 typedef TEvent type; 
 typedef pair<TObject*, eventHandleType> eventType; 
 enum { argNum = 10 }; 
 private: 
  eventType _event; 
 public: 
 TEvent() { _event = make_pair<TObject*, eventHandleType>(0, 0); } 
 TEvent(TObject* obj, eventHandleType e) { _event = make_pair<TObject*, eventHandleType>(obj, e); } 
 TEvent(eventType& val):_event(val) { } 
 TEvent(TEvent& ref) { _event = (eventType)ref; } 
 void assign(TObject* obj, eventHandleType e) { _event = make_pair<TObject*, eventHandleType>(obj, e); } 
 bool valid() { return _event.first && _event.second; } 
 TEvent& operator = (eventType& e) { _event = e; return *this; } 
 operator eventType() { return _event; } 
 bool operator == (TEvent& ref) { return this == &ref ? true : _event == (eventType)ref; } 
 bool operator == (eventType& e) { return _event == e; } 


 bool operator != (TEvent& ref) { return this == &ref ? false : _event != (eventType)ref; } 
 bool operator != (eventType& e) { return _event != e; }
//  __TEVENT_TEMPLATE_IMPL(10) //< 模板公共实现 
 
 /**
          * @brief 函数操作符,具有10个参数
          */
  
  RT operator () (T1 _1, T2 _2, T3 _3, T4 _4, T5 _5, T6 _6, T7 _7, T8 _8, T9 _9, T10 _10)
         {
             if (valid())
                 return (_event.first->*_event.second)(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10);
             else
                 return RT();
         }
     };







 typedef pair<TObject*, eventHandleType> eventType;  为什么编译出现错误呢

[解决办法]
觉得楼主把简单问题复杂化了
[解决办法]
class TObject {
public:
    TObject() { }
    virtual ~TObject() { }
};


TObject::*eventHandleType
是什么?

把他改成
*eventHandleType 这句话就没问题了。

把代码全粘出来看看吧。

热点排行