현재 시작 프로젝트에서 헤더 파일을 포함하는 데 많은 좌절감을 느끼고 있습니다. 지금까지 기본 파일에 링크 된 헤더 파일이 있고 컴파일이 기본 클래스를 읽을 수 없다는 동일한 오류가 계속 발생합니다.C++ 헤더 파일 오류 : 기본 클래스 정의되지 않음
헤더 파일을 읽는 데 문제가 있다고 생각됩니다. 어떻게해야합니까?
// 지금은 빌드
홈페이지 CPP 파일
#include <string>
#include "animal.h"
using namespace std;
enum COLOR { Green, Blue, White, Black, Brown };
int main() {
cout << "Starting" << endl;
int value = 0; Mammal *zoo[3];
int i = 0;
cout << "Program exiting …. " << endl;
return 0;
}
헤더 파일을 컴파일 오류가 표시되고 업데이트
#include <iostream>
#include <string>
#ifndef HEADER_H
#define HEADER_H
using namespace std;
enum COLOR { Green, Blue, White, Black, Brown };
class Animal {
public:
Animal() {
cout << "constructing Animal object " << _name << endl;
}
~Animal() {
cout << "destructing Animal object " << _name << endl;
}
Animal(std::string n, COLOR c) {
_name = n; _color = c;
cout << "constructing " << _name << " Color " <<
endl;
}
virtual void speak() const { cout << "Animal speaks " << endl; }
//void speak() const { cout << "Animal speaks " << endl; }
virtual void move() = 0;
void setName(std::string n) { _name = n; }
void setCOLOR(COLOR c) { _color = c; }
private:
std::string _name; COLOR _color;
};
class Mammal : public Animal {
public:
Mammal() {}
Mammal(std::string n, COLOR c) {
setName(n);
setCOLOR(c);
cout << "constructing Mammal object " << endl;
}
~Mammal() { cout << "destructing Mammal object " << endl; }
};
#endif
사용하기 전에'COLOR'을'animal.h'에 선언하면 안됩니까? – user0042
'COLOR'는 cpp 파일에 정의되어 있으며 헤더에 표시되지 않습니다. 헤더 파일에'std' 네임 스페이스의'std' 네임 스페이스에있는 다른 것들을 사용하고 있습니다. – VTT