코딩초보입니다 더블 연결리스트 과제 질문입니다

조회수 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_headg_tailNode정의 아래 줄로 이동 시켜야합니다. 헌데 Node생성자에서 두 전역 변수를 사용하고 있으니 전방선언을 하겠습니다. class Node* g_head = NULL;class Node* g_tail = NULL; 으로 변경하시면 됩니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)