C ++链接器错误涉及操作员重载功能

时间:2010-02-21 23:21:50

标签: c++ list operator-overloading linker-errors

我有一个Node类型列表。我想设置一个临时节点,它等于List前面的Node,如下所示:

class Node
{ 
   public:
      Node();
      Node& operator = (const Node& n);
};

但我一直收到链接错误:

  

...链接
  main.obj:错误LNK2019:未解析的外部符号“public:class Node& __thiscall Node :: operator =(class Node const&)”(?? 4Node @@ QAEAAV0 @ ABV0 @@ Z)在函数“void __cdecl”中引用fillScan(int,class std :: list>)“(?fillScan @@ YAXHV?$ list @ VNode @@ V?$ allocator @ VNode @@@ std @@@ std @@@ Z)
  C:\ Users \ Aaron McKellar \ Documents \ School Stuff \ CS445 \ Test \ Debug \ Test.exe:致命错误LNK1120:1未解析的外部

提前致谢!

2 个答案:

答案 0 :(得分:3)

您只展示了operator=的声明,而不是定义。要么您没有提供定义,要么链接器找不到它。

好吧,我应该说:链接器肯定找不到operator=的定义。要么是因为你忘了提供一个,要么因为你的项目/ Makefile设置不正确。

答案 1 :(得分:0)

您需要提供operator=的定义,当然:

Node& Node::operator=(const Node& n) {

     // 'copy' semantics for Node
}

请注意,如果未提供成员副本,编译器将自行生成赋值运算符。如果足够,请使用编译器生成的运算符。