LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 633|回复: 5

哪位大侠给看一下这段代码

[复制链接]
发表于 2004-8-12 15:12:31 | 显示全部楼层 |阅读模式
template <class TYPE> class CTemplate  
{
public:
        typedef void (TYPE::*CBFN)();
       

        CTemplate()
        {
                m_pObject = NULL;
                m_fnOncallback = NULL;
        }

public:
        void SetObject(TYPE* pObject)
        {
                m_pObject = pObject;
        }

        void AddOncallback(CBFN pfn)
        {
                m_fnOncallback = pfn;
        }


private:
        TYPE *m_pObject;
        CBFN m_fnOncallback;
       
};

class CTest
{
        CTest();
        ~CTest(){};
        void OnCallback();
private:
        CTemplate<CTest> m_temp;       
};

CTest::CTest()
{
        m_temp.SetObject(this);
        m_temp.AddOncallback(OnCallback);
       
}

void CTest::OnCallback()
{
}

在vs.net 2003编译通过
gcc编译不过去,错误如下:
make  all-recursive
make[1]: Entering directory `/root/code/test4'
Making all in src
make[2]: Entering directory `/root/code/test4/src'
c++ -DHAVE_CONFIG_H -I. -I. -I..     -g -O2 -c test3.cpp
test3.cpp:59: warning: all member functions in class `CTest' are private
test3.cpp: In constructor `CTest::CTest()':
test3.cpp:70: error: no matching function for call to `CTemplate<CTest>::AddOncallback(<unknown type>)'
test3.cpp:47: error: candidates are: void CTemplate<TYPE>::AddOncallback(void (TYPE::*)()) [with TYPE = CTest]
make[2]: *** [test3.o] 错误 1
make[2]: Leaving directory `/root/code/test4/src'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/root/code/test4'
make: *** [all-recursive-am] 错误 2

谁能给我解释一下?谢拉!!
 楼主| 发表于 2004-8-16 14:59:14 | 显示全部楼层

高手不屑于回答么

自己顶
发表于 2004-8-16 16:20:44 | 显示全部楼层
把构造函数和析够构函数做成public试试

  1. class CTest
  2. {
  3. public:
  4.     CTest();
  5.     ~CTest(){};
  6.     void OnCallback();
  7. private:
  8.     CTemplate<CTest> m_temp;
  9. };
复制代码
 楼主| 发表于 2004-8-16 16:27:51 | 显示全部楼层
不是这里的问题啊!!!
又没有构造CTest的实例
发表于 2004-8-16 16:40:17 | 显示全部楼层
可能是搜索的算法不同吧
试试写完整的? m_temp.AddOncallback(&CTest::OnCallback)
 楼主| 发表于 2004-8-16 18:23:39 | 显示全部楼层
正解
谢谢啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表