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的std :: string)函數的聲明使用的std :: string的名字,但我還沒有在頭文件中包含它。因此,我希望編譯器抱怨丟失的符號。但它編譯並運行良好!爲什麼?
的代碼的其餘部分...
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