我们假设我有一个班级Person
TestClass.h:
#pragma once
class Person {
int age;
std::string name;
public:
Person(int age, const std::string& name);
private:
int getAge();
std::string getName();
};
TestClass.cpp
#include "stdafx.h"
#include "TestClass.h"
Person::Person(int age, const std::string& name) : age(age), name(name) {};
int Person::getAge() {
return age;
}
std::string Person::getName() {
return name;
}
对于此示例,代码编译。
但是,如果我在TestClass.cpp
中的第1行和第2行之间切换并包含
stdafx.h第二,由于某种原因,我得到以下编译错误:
'Person': is not a class or namespace name
missing type specifier - int assumed. Note: C++ does not support default-int
'Person': constructor initializer lists are only allowed on constructor definitions
'Person': is not a class or namespace name
'Person': function should return a value; 'void' return type assumed
'age': undeclared identifier
'Person': is not a class or namespace name
'name': undeclared identifier
显然,如果我首先包含stdafx.h,我将不会有任何问题,但我似乎无法理解为什么会发生这种情况。任何帮助将不胜感激。
答案 0 :(得分:0)
执行以下操作:
然后它应该工作。