operator = function上的C ++ gcc错误

时间:2012-03-17 18:49:36

标签: c++ gcc compiler-errors

功能定义

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

我认为在某处定义此方法时我犯了某种语法错误。我怎么去修理呢?感谢。

2 个答案:

答案 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)