类模板的成员函数

template<typename T>

class Test

{

public:

    Test();

    Test(T value);

    ~Test();

    setAge(T ageValue);

    T getAge()const;

    //用模板的嵌套实现一个仿函数

    template<typename T_Value>

    bool operator()(T_Value l_value,T_Value r_value)const

    {

        return l_value<r_value;

    }

private:

    T age;

};

template<typename T>Test<T>::Test()

{

    ;

}

template<typename T>Test<T>::Test(T value)

{

    setAge(value);

}

template<typename T>Test<T>::setAge(T ageValue)

{

    if(ageValue < 0)

    {

       value = 0;

    }
    age = value;

}

template<typename T>T Test<T>::getAge()

{

    return age;

}

template<typename T>Test<T>::~Test()

{


}

int main()
{

    Test<int>t =Test<int>(10);

    cout<<t.getAge()<<endl;


    cout<<t(12,3)<<endl;//调用仿函数

    return 0;

}

//运行结果

 10

 0

说明:

类模板的成员函数的实现均在类声明的头文件中实现。可以在类内也可以在类外。在类外实现时要注意模板的嵌套

以上例子中的仿函数如果放在类外实现:

template<typename T>template<typename T_value>

bool Test<int>::operator()(T_value l_value,T_value r_value)const

{

    //注意:此种写法在vc6.0下编译失败,请高手指教

    //在vs2010下可以编译通过

    return l_value < r_value;

}

总结:

C++的类模板的成员函数不能在.cpp中定义,必须在其类声明的.h文件中定义,可以在类外也可以在类内。

              

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值