リンクリストの最後に文字列を挿入しています。ファイルをコンパイルすると、2つのエラーが発生します。リンクリストの最後に文字列を挿入
エラー: 'setData'がこのスコープで宣言されていません。 setData(* string_p);
エラー: 'getNext'がこのスコープで宣言されていませんでした。 newNode = getNext();
しかし、私はそれらを使用する前に定義されています(上記の方法で定義されています)ので、私はエラーを理解していません。
#include <iostream>
#include <string>
using std::string;
using std::cout;
using std::endl;
#define SUCCESS 0
#define FAIL 1
// Represents an entry object in the linked-list
class ListEntry
{
public:
explicit ListEntry();
explicit ListEntry(const char *string_p);
~ListEntry();
string getData();
void setData(const char* string_p);
void setData(string string);
ListEntry *getNext();
ListEntry *getPrevious();
ListEntry *prev_p; // pointer to previous entry in the linked-list
ListEntry *next_p; // pointer to next entry in the linked-list
private:
string data; // entry's string
};
// Represents the linked-list object
class List
{
public:
List();
~List();
bool printForward();
bool printReverse();
bool insert(const char *string_p);
private:
int entryCount; // number of entries present in the linked-list
ListEntry *head_p; // pointer to the first entry in the list
ListEntry *tail_p; // pointer to the last entry in the list
};
// ListEntry constructor
ListEntry::ListEntry()
{
this->prev_p = NULL;
this->next_p = NULL;
return;
}
// ListEntry constructor
ListEntry::ListEntry(const char *string_p)
{
this->data = string_p;
this->prev_p = NULL;
this->next_p = NULL;
return;
}
// List entry destructor
ListEntry::~ListEntry()
{
return;
}
// Return the stored string object
string ListEntry::getData()
{
return this->data;
}
// Set the internal string data from a char*
void ListEntry::setData(const char* string_p)
{
this->data = string_p;
}
// Set the internal string data from a string
void ListEntry::setData(string string)
{
this->data = string;
}
// Returns reference to the next entry in the list
ListEntry *ListEntry::getNext()
{
return this->next_p;
}
// Returns reference to the previous entry in the list
ListEntry *ListEntry::getPrevious()
{
return this->prev_p;
}
そして、(私のプログラムでは、上記の方法を下回っている)私の挿入機能:
bool List::insert(const char *string_p)
{
// Please write the list insert function
//new node to be inserted
ListEntry* newNode = new ListEntry();
//List *newList = new List();
if(newNode == NULL)
{
cout << "FAILED";
}
else
{
setData(*string_p); //////ERROR HERE
if(this->head_p = NULL)
{
newNode = getNext(); //////ERROR HERE
newNode = this->head_p;
this->head_p = newNode; // newNode now points to the head node
this->entryCount++;
return SUCCESS;
}
else
{
ListEntry* temp = this->head_p;
while(temp -> next_p != NULL)
{
temp = temp -> next_p;
}
temp -> next_p = newNode;
this->entryCount++;
return SUCCESS;
}
}
}
また、setData(* string_p); setData(string_p)である必要があります。 –
'setData'と' getNext'は 'ListEntry'に属していますが、' List'に属するメソッドで 'this'と一緒に使用しています。あなたは 'newNode-> getNext();と' newNode-> setData(string_p); 'を意味しましたか? –