我有来自早期作业的序列类的代码,我应该将其转换为带有节点类的模板。我的所有其他函数似乎都运行正常,但这个重载运算符的措辞或语义似乎有问题。这是我的代码:
template <class sequence, class Item>
void operator =(const sequence source)
{
if (this == &source)
{
return;
}
list_clear(head_ptr);
many_nodes = 0;
list_copy(source.head_ptr, head_ptr, tail_ptr);
start();
for (node *ptr=source.head_ptr; ptr != source.cursor; ptr = ptr->link())
{
advance();
}
many_nodes = source.many_nodes;
}
这是我得到的错误:6 \ sequence4.template(152):错误C2801:'main_savitch_6B :: operator ='必须是非静态成员
第152行是该函数的右大括号。
我确实在网站上搜索了答案并尝试了一些修复,但似乎都没有。
谢谢大家,我感谢所有的帮助!
答案 0 :(得分:0)
我认为您的运营商的签名=不正确。我想通常你必须有这样的东西:
Sequence & operator=(const Sequence & rhs){
if (&rhs != this){
// Your stuff ...
}
return *this;
}
答案 1 :(得分:0)
您似乎已经被要求创建一个Sequence
类,Item
模板化,类Sequence
有一个赋值运算符。在这种情况下,语法将是。
template< class Item >
class Sequence
{
Sequence& operator=( Sequence const& rhs )
{
...
}
...
};
或者我可能误解了这个问题。