很抱歉这个又长又令人困惑的标题,但我想不出更好的方法来问这个问题。所以,我有一堂课:
template <typename T>
class Set
{
public:
//random member functions here
private:
struct Node{
T key;
Node *right;
Node *left;
int height;
};
public:
Node* r_add(Node *temp);
};
Node* Set<T>::r_add(Node *temp)
{
return temp;
}
当我尝试实现函数 r_add 时,我不断收到错误,即行外定义的返回类型与 r_add 函数声明中的返回类型不同。当我尝试在类成员函数中调用私有结构时,我不太清楚如何声明返回类型。
其语法必须是:
template <typename T>
Set<T>::Node* Set<T>::r_add(Node *temp)
{
return temp;
}
请注意,您不必 use Set<T>::Node*
对于参数类型,因为范围Set<T>
将用于Node
在那时候。
另一种选择是使用尾随返回类型。这将使您避免键入Set<T>
超出必要的范围。
template <typename T>
auto Set<T>::r_add(Node *temp) -> Node*
{
return temp;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)