Person.h헤더가 누락 된 #include로 컴파일되는 이유는 무엇입니까?
#ifndef PERSON_H_
#define PERSON_H_
/* Person.h */
class Person {
int age;
std::string name;
public:
Person(int, std::string);
std::string getName();
int getAge();
};
#endif /* PERSON_H_ */
사람 (INT 표준 : : 문자열) 함수 선언은 표준 : : 문자열 이름을 사용, 아직 내가 헤더 파일에 포함하지 않았습니다. 따라서 필자는 컴파일러가 누락 된 심볼에 대해 불평 할 것으로 기대합니다. 그러나 컴파일되고 잘 실행됩니다! 왜?
코드의 나머지 ...
Person.cpp
#include <string>
#include "Person.h"
Person::Person(int age, std::string name)
{
this->name = name;
this->age = age;
}
std::string Person::getName()
{
return this->name;
}
int Person::getAge()
{
return this->age;
}
하여 Main.cpp 또한
#include <string>
#include "Person.h"
int main() {
printFunc();
Person chelsea_manning(5, std::string("Chelsea Manning"));
}
, 정말 날 경우 알려 주시기 바랍니다, ++ C에 새로운 오전 당신은 내 코드/OOP에 이상한 것을 본다.
포함은 복사 붙여 넣기와 같습니다. cpp가 할 수있는 순서대로 헤더를 복사하여 붙여 넣는 것을보십시오. – chris
main.cpp와 person.cpp 둘 다에서'#include'을 제거하고 무슨 일이 일어나는 지보십시오.). –
mfontanini
포함 순서의 역순으로 시도하십시오 – tay10r