0

二重リンクリストコードに取り組んでいますが、コンパイルを試みるたびにエラーの原因を特定できません。スローされるエラーは

main.obj:エラーLNK2019:未解決の外部シンボル "public:__thiscall DoublyList :: DoublyList(void)"(?? 0?$ DoublyList @ H @@ QAE @ XZ)関数で参照> _main 1> Doublely List.exe:致命的エラーLNK1120:1つの未解決の外部

DoublyList.h-> http://pastebin.com/5wbeKksvDoublyListNode.h
およびmain.cpp-> http://pastebin.com/vVdGpgaW

4

4 に答える 4

2

DoublyListデフォルトのコンストラクターを宣言しますが、定義しません。デストラクタについても同じことが言えます。

于 2011-10-26T17:47:11.687 に答える
0

DoublyListのコンストラクターを宣言しましたが、定義していません。DoublyList()の後に{}を追加し、それが機能するかどうかを確認します。それも。

于 2011-10-26T17:47:31.950 に答える
0

あなたの質問とは関係ありません。これがコードレビュー セクションではないことはわかっていますが、ここに私の考えをいくつか示します。

あなたの挿入機能で

DoublyListNode < T > *newPtr = new DoublyListNode< T >(tempData);
newPtr->nextPtr = newPtr->prePtr = NULL;
if(newPtr == NULL)
{
     cout << "Insert cannot allocate memory\n";
} //end if

する必要があります

DoublyListNode < T > *newPtr = new DoublyListNode< T >(tempData);
if(newPtr == NULL)
{
     cout << "Insert cannot allocate memory\n";
}else{
     newPtr->nextPtr = newPtr->prePtr = NULL;
     // rest of code

また、検索機能で

DoublyListNode< T > *currentPtr = head;
for(int i = 1; i < index; i++)
{
     currentPtr = currentPtr->nextPtr;
} // end for

する必要があります

DoublyListNode< T > *currentPtr = head;
for(int i = 1; currentPtr && (i < index); i++)
{
     currentPtr = currentPtr->nextPtr;
} // end for

また、C++ を使用しているため、インデックスを 0 ベースにすることを検討してください (コードを見て、それらは atm 1 ベースです)。

于 2011-10-26T18:44:26.530 に答える
0

コピー コンストラクターを定義しましたが、既定のコンストラクターを定義するのを忘れていました。

template< class T >
DoublyList< T > :: DoublyList() : head(NULL), size( 0 )
{
    // empty body
} // end DoublyList
于 2011-10-26T17:51:36.657 に答える