코딩초보입니다 더블 연결리스트 과제 질문입니다
조회수 527회
안녕하세요 더블 연결리스트를 이용해 나라별 코로나 정보를 입력하고 그것을 출력하는 코드를 만들었는데 컴파일 에러가 수십개가 뜹니다 ㅠㅠ 뭐가 문젠지 모르겠습니다 코드 첨부합니다
#include <iostream>
#include <string>
using namespace std;
Node* g_head = NULL;
Node* g_tail = NULL;
int g_count = 0;
class Node {
public:
string m_nation = "";
int m_occur = 0;
int m_deadman = 0;
double m_mortality = 0;
Node* next = NULL;
Node* prev = NULL;
Node(string nation = "", int occur = 0, int deadman = 0, Node* left = NULL){
m_nation = nation;
m_occur = occur;
m_deadman = deadman;
m_mortality = deadman / occur;
if (g_count == 0) {
g_head = this;
g_tail = this;
g_count++;
}
else {
g_tail = this;
prev = left;
prev->next = this;
g_count++;
}
}
private:
protected:
};
void print_all_list() {
Node* pt = g_head;
for (int i = 0; i < g_count; i++) {
cout << pt->m_nation << " " << pt->m_occur << " " << pt->m_deadman << " " << pt->m_mortality << endl;
pt = pt->next;
}
}
int main(void) {
Node America("America", 43214, 533);
Node China("China", 81711, 3277,&America);
Node France("France", 19856, 869, &China);
Node Germany("Germany", 29056, 123, &France);
Node Iran("Iran", 23049, 1812, &Germany);
Node Italy("Italy", 63927, 6077, &Iran);
Node Korea("Korea", 9037, 120, &Italy);
Node Spain("Spain", 33098, 2182, &Korea);
print_all_list();
return 0;
}
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
아래와 같은 컴파일 오류가 발생하네요.
/solution0.cpp:5:1: error: unknown type name 'Node' Node* g_head = NULL; ^ /solution0.cpp:6:1: error: unknown type name 'Node' Node* g_tail = NULL;
C++에서 어떤 타입이름을 사용하기 위해서는 해당 이름이 이미 선언되어 있어야합니다.
Node* g_head = NULL;
는class Node
의 정의보다 위에 있습니다. 다시 말해g_head
가 선언되는 시점에서는Node
가 존재하지 않습니다. 이 문제를 해결하기 위해서는 전방 선언을 사용하거나g_head
와g_tail
을Node
정의 아래 줄로 이동 시켜야합니다. 헌데Node
생성자에서 두 전역 변수를 사용하고 있으니 전방선언을 하겠습니다.class Node* g_head = NULL;
와class Node* g_tail = NULL;
으로 변경하시면 됩니다.
댓글 입력