提问人:KenshinLink 提问时间:5/19/2023 更新时间:5/19/2023 访问量:64
如何对类模板方法执行运算符重载
How to do an operator overload for a class template method
问:
尝试在类的 cpp 文件中重载运算符时,我无法避免错误。我尝试了许多变体,但无法获得正确的语法。
目前我有这个,它有一个错误“在函数返回类型中推导出类类型'TreeSet'”。
// cpp file
template <typename T>
TreeSet TreeSet<T>::operator+(const TreeSet &other) {}
该函数被声明为 this,其中类是类型名称为 T 的模板。我也不允许更改头文件中的任何内容。
// header file
TreeSet operator+(const TreeSet &other);
我尝试为返回类型和/或参数指定模板类型,但两者都没有提供解决方案。
答:
1赞
carraro
5/19/2023
#1
编译器无法在函数的返回类型中推断类类型“TreeSet”,因为缺少模板参数“T”。
你只需要这样做:
template <typename T>
TreeSet<T> TreeSet<T>::operator+(const TreeSet &other) {
// Your implementation here
}
评论
TreeSet
->TreeSet<T>
在类外定义的返回类型中