功能定义
const circularLinkedList<Tp>& operator=(const circularLinkedList<Tp>& otherList);
导致错误的行,错误消息引用第327行,它从nodeType ....
开始template <class Tp>
nodeType<Tp>* circularLinkedList<Tp>&::operator=(const circularLinkedList<Tp>& otherList)
来自gcc编译器的错误消息是:
circularLinkedList.h:327: error: invalid declarator before â&â token
circularLinkedList.h:327: error: expected initializer before â&â token
我认为在某处定义此方法时我犯了某种语法错误。我怎么去修理呢?感谢。
答案 0 :(得分:2)
您可以为我们发布更多代码吗?你能解释一下nodeType是什么吗?
以下内容类似于函数定义:
template <class Tp>
nodeType<Tp>* circularLinkedList<Tp>&::operator=(const circularLinkedList<Tp>& otherList)
然而,一方面,声明说它返回const circularLinkedList<Tp>&
。
此外,您不希望在&
之前拥有::
。它必须是类型的名称,而不是指向该类型变量的指针或引用。如果您想要这种行为,则需要使用代理类。
所以它应该是这样的:
template <class Tp>
const circularLinkedList<Tp>& circularLinkedList<Tp>::operator=(const circularLinkedList<Tp>& other)
哪个几乎总是以return *this;
答案 1 :(得分:0)
在第一个代码块中,显示方法声明,而不是函数定义。 在第二个代码块中,显示方法定义的标题。
方法声明:
返回const circularLinkedList<Tp>&
方法定义:
返回nodeType<Tp>*
。
您没有定义您声明的方法。 您正在定义一些尚未声明的方法。
定义的标题应为:
const circularLinkedList<Tp>& circularLinkedList<Tp>::operator=(const circularLinkedList<Tp>& otherList)