这段运算符重载咋回事
这段运算符重载怎么回事template class _Conusmer_Data_Typestruct _Conumser_Plus{_Conusmer_Data_Type
这段运算符重载怎么回事
template <class _Conusmer_Data_Type>
struct _Conumser_Plus
{
_Conusmer_Data_Type _A_one;
_Conusmer_Data_Type _A_tow;
_Conumser_Plus &operator()(_Conumser_Plus &,_Conumser_Plus &);
};
template <class _Conumser_Data_Type>
_Conumser_Plus<_Conumser_Data_Type>& _Conumser_Plus::operator()(_Conumser_Plus<_Conumser_Data_Type>& _J,_Conumser_Plus<_Conumser_Data_Type>& K)
{
return _J._A_one+K._A_tow;
}
上面的代码有问题。。。求大神解释
[解决办法]定义改为下边这样。。
template <class _Conumser_Data_Type>
_Conumser_Plus<_Conumser_Data_Type>& _Conumser_Plus<_Conumser_Data_Type>::operator()(_Conumser_Plus& _J,_Conumser_Plus& K)
{
return _J._A_one+K._A_tow;
}
[解决办法]重载 () 后不是提供 + 操作符了, 而是一个函数对象.
当然, 如果你确认你是想这样用, 只是语法上的问题的话, 试试
外面定义的 _Conumser_Plus::operator() 加上模板参数 _Conumser_Plus<_Conusmer_Data_Type>::operator()
[解决办法]1.类域,定义在类体之外的成员函数的成员函数名之前的文本没在类域之中,需要声明加模板参数限定
2.怎么确保_Conusmer_Data_Type和_Conumser_Plus<_Conumser_Data_Type>之间存在类型转换?
3.即使存在类型转换,一般情况下,_J._A_one+K._A_tow的结果是一个临时对象,不能被绑定在非const引用上面,所以_J._A_one+K._A_tow是不能被绑定在_Conumser_Plus<_Conumser_Data_Type>&上的
最后,没看明白楼主要实现什么功能。