我有一个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未解析的外部
提前致谢!
答案 0 :(得分:3)
您只展示了operator=
的声明,而不是定义。要么您没有提供定义,要么链接器找不到它。
好吧,我应该说:链接器肯定找不到operator=
的定义。要么是因为你忘了提供一个,要么因为你的项目/ Makefile设置不正确。
答案 1 :(得分:0)
您需要提供operator=
的定义,当然:
Node& Node::operator=(const Node& n) {
// 'copy' semantics for Node
}
请注意,如果未提供成员副本,编译器将自行生成赋值运算符。如果足够,请使用编译器生成的运算符。