[C++ Error] No default constructor exists for class

정의현·2021년 5월 11일

Error Solution

목록 보기
1/1

에러 발생 상황

Heap 정렬을 공부하던 중 Node List 생성에서 오류가 발생

class Node {
	int data;
	Node* left;
	Node* right;
public:
	Node(int data) { this->data = data; this->left = 0; this->right = 0; }
	friend class Heap;
};
class Heap {
	Node* heap;
	int n;
	int MaxSize;
	Heap(int sz = DefaultSize) {
		this->MaxSize = sz;
		this->n = 0;
		this->heap = new Node[this->MaxSize + 1];  << 에러 발생라인
	}
};

문제 파악

에러 메시지는 다음과 같았음

No default constructor exists for class

에러 메시지의 뜻은 "기본 생성자가 클래스에 존재하지 않음

문제 해결

Node List를 생성 -> 인자가 없는 Node 생성자를 호출
-> Node에서 인자가 없는 생성자가 존재하지 않음 (문제 발생)

Node class의 기본 생성자를 추가해줌

Node() { this->data = 0; this->left = 0; this->right = 0; }
profile
프로그래밍을 배우는 대학생

0개의 댓글