1

我有一个节点类型的列表。我想设置一个临时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 unresolved externals

提前致谢!

4

2 回答 2

3

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

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

于 2010-02-21T23:24:44.557 回答
0

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

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

     // 'copy' semantics for Node
}

请注意,如果没有提供,编译器会使用成员复制自己生成赋值运算符。如果足够,请使用编译器生成的运算符。

于 2010-02-21T23:27:07.070 回答