Visual Studio在STDAFX.H之前包含标头,会产生错误



让我们假设我有一个 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,我不会有任何问题,但是我似乎不明白为什么会发生这种情况。任何帮助将不胜感激。

执行以下操作:

  1. # include< string>进入testClass.h
  2. 禁用预编译标题

然后它应该起作用。

相关内容

  • 没有找到相关文章

最新更新