1

假设我有一堂课Person

测试类.h:

#pragma once

class Person {
    int age;
    std::string name;

public:
    Person(int age, const std::string& name);

private: 
    int getAge();
    std::string getName();
};

测试类.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;
}

对于此示例,代码编译。但是,如果我在第 1 行和第 2 行之间切换TestClass.cpp并包含 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 我不会有任何问题,但我似乎无法理解为什么会发生这种情况。任何帮助,将不胜感激。

4

1 回答 1

0

请执行下列操作:

  1. #include <string> 到 TestClass.h
  2. 禁用预编译头文件

然后它应该工作。

于 2017-03-05T00:45:17.437 回答