Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在模板中重载运算符“=”时出现问题_C++_Templates_Operator Overloading - Fatal编程技术网

C++ 在模板中重载运算符“=”时出现问题

C++ 在模板中重载运算符“=”时出现问题,c++,templates,operator-overloading,C++,Templates,Operator Overloading,我从一个先前赋值的sequence类中得到了这段代码,并且应该将其转换为一个带有节点类的模板。我的所有其他函数似乎都工作正常,但这个重载运算符的措辞或语义似乎有问题。这是我的密码: template <class sequence, class Item> void operator =(const sequence source) { if (this == &source) { return; } list_clear(head_ptr); many_

我从一个先前赋值的sequence类中得到了这段代码,并且应该将其转换为一个带有节点类的模板。我的所有其他函数似乎都工作正常,但这个重载运算符的措辞或语义似乎有问题。这是我的密码:

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.template152:error C2801:“main_savitch_6B::operator=”必须是非静态成员

第152行是函数的右括号

我确实在网站上搜索了答案,并尝试了一些修复方法,但似乎都不起作用


谢谢各位,我感谢你们的帮助

我认为您的操作员的签名不正确。我想通常你一定有这样的东西:

Sequence & operator=(const Sequence & rhs){
if (&rhs != this){
// Your stuff ...
}
return *this;
}

看起来您被要求创建一个类序列,以项为模板,并且该类序列有一个赋值运算符。在这种情况下,语法将是

template< class Item >
class Sequence
{
    Sequence& operator=( Sequence const& rhs )
    {
        ...
    }
...
};

或者我可能误解了这个问题。

从发布的代码片段中看不出operator=是否确实是某个类的非静态成员函数。定义是否在类声明中?显示整个代码。并且请缩进。模板参数项不能隐式推断。或者序列和序列::运算符=常量序列和rhs