1

タイプ 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 つの未解決の外部

前もって感謝します!

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 に答える