消除"Undeclared identifier"错误



所以我正在做一个链表作业,在链表表单中给定两个数字,将数字相加并在链表表单中做出最终答案。我的代码不断收到"未声明的标识符"错误,我想知道如何解决它。

错误信息:

List.cpp:48:3:错误:使用未声明的标识符"追加" 附录(h, c(;

谢谢。

#include <iostream>

#ifndef LISTNODE_H
#define LISTNODE_H
using namespace std;
class ListNode {
public:
ListNode();
ListNode(int value, ListNode* next);
int value;
ListNode *next;

private:
friend class List;
};
#endif



#include <iostream>
#include "ListNode.h"
using namespace std;
ListNode:: ListNode() {
value = 'b';
next = NULL;
}


#include <iostream>
#include "ListNode.h"
#include <vector>
#ifndef LIST_H
#define LIST_H
using namespace std;
class List {
public:
List();
void append(ListNode* node, vector<char> c);
ListNode *head;

};
#endif




#include <iostream>
#include <string>
#include "List.h"
#include <vector>
#include "ListNode.h"
using namespace std;
void List:: append(ListNode *node, vector<char> c) {
//ListNode *temp
for(int i = 0; i < c.size(); i++) {
if(head == NULL) {
head = node;
}
else {
ListNode* itr = head;
while(itr -> next != NULL) {
itr = itr -> next;
}
node = itr -> next;
node -> value = c[i];
cout << node -> value << endl;
}
}
}

List:: List() { //Initializes the head and the tail for the whole class
head = NULL;
}
int main() {
ListNode *h;
string num1, num2, sentence;
vector<char> c;
cout << "Type in two numbers" << endl;
cout << "Number 1: " << endl;
cin >> num1;
cout << "Number 2: " << endl;
cin >> num2;
//cout << "Type in a sentence: " << endl;
//cin >> sentence;
cout << "--------" << endl;
for(int i = 0; i < num1.size(); i++) {
c.push_back(num1[i]);
}
append(h, c);
return 0;
}

此代码:

append(h, c);

调用名为append的自由函数。但是您的代码中没有这样的函数。

List类中确实有一个append函数,但它是一个成员函数,因此您需要一个List对象来调用该函数。所以你需要这样的东西:

List l;
l.append(h, c);

您在类列表中定义了成员函数附加(顺便说一下,(函数(没有任何意义(

void List:: append(ListNode *node, vector<char> c) {
//...
}

但是在 main 内部,您正在调用一个独立的函数附加

append(h, c);

与类列表无关。

您甚至没有在主要声明一个 List 类型的对象。

请注意,类 ListNode 具有类型为int的数据成员。

int value;

但是,您正在尝试在此数据中保存 char 类型的成员对象,这些对象是声明为vector<char> c的向量的元素。

并且完全不清楚为什么类ListNode的默认构造函数使用字符'b'初始化数据成员值。

ListNode:: ListNode() {
value = 'b';
next = NULL;
}

所以整个代码没有意义。

似乎您的意思是类ListNode的数据成员值的类型为char而不是int

char value;

在这种情况下,类List的函数append可以通过以下方式声明和定义

void List:: append( const std::vector<char> &v ) 
{
ListNode **current = &head;
while ( *current ) current = &( *current )->next;
for ( const auto &item : v )
{
*current = new ListNode( item, nullptr );
current = &( *current )->next; 
}
}

相关内容

  • 没有找到相关文章

最新更新