私は他の同様の質問を見ましたが、私は本当に答えをよく理解していませんでした。私はこのエラーを取得しています:機能main': C:/Users/Danny/ClionProjects/LinkedList/main.cpp:9: undefined reference to
LINKLISTで`class :: class()エラーへの未定義の参照
を:: LINKLIST()」 collect2.exe:エラー:ldは
linkList.cpp 1つの終了ステータスが返されました:
を#include <iostream>
#include <cstdlib>
#include "linkList.h"
using namespace std;
linkList::linkList()
{
head = NULL;
follow = NULL;
trail = NULL;
}
void linkList::addNode(int dataAdd)
{
nodePtr n = new node;
n->next = NULL;
n->data = dataAdd;
if (head != NULL)
{
follow = head;
while (follow->next != NULL)
{
follow = follow->next;
}
}
else
{
head = n;
}
}
void linkList::deleteNode(int nodeDel)
{
nodePtr delPtr = NULL;
follow = head;
trail = head;
while(follow != NULL)
{
trail = follow;
follow = follow->next;
if (follow->data == nodeDel)
{
delPtr = follow;
follow = follow->next;
trail->next = follow;
delete delPtr;
}
if(follow == NULL)
{
cout << delPtr << " was not in list\n";
delete delPtr; // since we did not use delPtr we want to delete it to make sure it doesnt take up memory
}
}
}
void linkList::printList()
{
follow = head;
while(follow != NULL)
{
cout << follow->data << endl;
follow = follow->next;
}
}
LinkList.h:
struct node {
int data;
node* next;
};
typedef struct node* nodePtr;
class linkList
{ // the linkList will be composed of nodes
private:
nodePtr head;
nodePtr follow;
nodePtr trail;
public:
linkList();
void addNode(int dataAdd);
void deleteNode(int dataDel);
void printList();
};
main.cppに:
#include <cstdlib>
#include "linkList.h"
using namespace std;
int main() {
linkList myList;
return 0;
}
私は私のメインのファイルにlinkList.cppを#includeするの#include linkList.hを変更したときに、私はそれが動作しますが、それは私のファイルがリンクされている方法とは何かを持って理解してなぜこれはいい?私は完璧に動作し、基本的に同じタイプのセットアップを持つバイナリ検索ツリーである、別の同様のプログラムを持っています。だから私の質問は私がそれを修正する方法ですか?どうしてそれが起こっているのですか?
また、 'collect2.exe'はCygWinを意味し、コマンドラインを使用している場合は' g ++ main.cpp linkList.cpp'です。 –
Ah。私はそれがMSの名前だと確信していました。 – krzaq
それはどういう意味ですか?私はプログラムを実行するためにCLionを使用しています。 @Ken YN – djdangerousdick