重载模板中的运算符"="时出现问题
Problems overloading operator "=" in template
我从早期赋值的序列类中获得此代码,并且我应该将其转换为具有节点类的模板。我所有的其他函数似乎都工作得很好,但是这个重载操作符的措辞或语义似乎有问题。下面是我的代码:
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;
}
这是我得到的错误:6sequence4.template(152):错误C2801: 'main_savitch_6B::operator ='必须是一个非静态成员
第152行是函数的右括号。
我确实在网站上搜索了答案,并尝试了一些修复,但似乎都不起作用。
谢谢大家,我感谢所有的帮助!
我认为你的operator=的签名不正确。我想通常你应该是这样的:
Sequence & operator=(const Sequence & rhs){
if (&rhs != this){
// Your stuff ...
}
return *this;
}
看起来您已经被要求创建一个类Sequence
,模板化在Item
上,类Sequence
有一个赋值操作符。在这种情况下,语法应该是。
template< class Item >
class Sequence
{
Sequence& operator=( Sequence const& rhs )
{
...
}
...
};
或者我可能误解了你的问题
相关文章:
- 一个关于在C++中重载布尔运算符的问题
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 运算符继承和 cpp 核心准则 c.128 的问题
- 在C++中使用重载提取运算符时出现问题
- 移动赋值运算符;尝试引用已删除的函数.我该如何解决这个问题?
- 关于条件块的问题与&&运算符有关
- 重载运算符与添加问题
- 加、乘、除、减复数的问题 C++ - 运算符重载
- 我需要这方面的帮助C++在使用逻辑运算符时是/否问题
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 如何解决不明确的运算符过载问题?
- 屏幕插入运算符<<的运算符过载问题
- 如何通过使用 2 位或更多数字的 XOR 运算符来执行此操作C++问题
- 在 C++ 的自定义运算符中删除与删除[](不同于常见的删除与删除[]问题)
- 用户定义的文本运算符(在原始模式下)存在问题
- 关于重载 -> 运算符中 const 关键字的特定位置的问题
- 字符 * 未从重载运算符或内存管理问题正确返回
- constexpr 运算符重载使用参数的问题
- c++中重载输入运算符的问题
- 有趣的问题运算符重载