在 Visual Studio 中使用 C++ 类 - 未声明的标识符错误 [重复]

Posted

技术标签:

【中文标题】在 Visual Studio 中使用 C++ 类 - 未声明的标识符错误 [重复]【英文标题】:Using a C++ Class in Visual Studio - undeclared identifier error [duplicate] 【发布时间】:2017-12-20 17:11:31 【问题描述】:

我希望这非常简单,但我终其一生都无法找出问题所在。我是 C++ 新手,我在 Visual Studio 中创建了一个 C++ 类,并试图在另一个文件的主要方法中使用它。我已经将所有东西都剥离到最低限度,但我仍然无法让它运行。我得到的第一个编译错误是“测试”:未声明的标识符。如果我删除“测试测试;”从 App.cpp 一切都编译得很好。 下面是代码。有人可以帮忙吗?

App.cpp:

#include "Test.h"
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
#include <fstream>

using namespace std;

int main()

    Test test;
    //cout << test.getNumber() << endl;
    return 0;

测试.h:

#pragma once
class Test

private:
    int number;

public:
    int getNumber();
    Test();
    ~Test();
;

Test.cpp:

#include "stdafx.h"
#include "Test.h"


int Test::getNumber()

    return number;


Test::Test()

    this->number = 1;



Test::~Test()


【问题讨论】:

将此包含 #include "Test.h" 放在此 #include "stdafx.h" 之后 Visual Studio 在#include "stdafx.h" 之前不会编译任何东西,如果使用预编译头文件。 问题在于 VS 默认使用 Visual C++ 的“预编译头文件”功能,这使得预处理器以非标准方式运行。正如@VladfromMoscow 所指出的,一个修复方法是让预编译的标头(此处为"stdafx.h")成为每个实现文件中的第一个包含。更好的解决方案是在项目设置中关闭预编译头文件。右键单击项目→属性→将其关闭。在那里。 真的吗?就是这样......好吧,我确实说过它一定很简单。谢谢 【参考方案1】:

问题是"stdafx.h" 是预编译的。 Visual c++ 不会编译源文件中#include "stdafx.h" 之前的任何内容,除非未选中编译选项/Yu'stdafx.h'(默认情况下);它假定源代码中直到并包括该行的所有代码都已编译。

解决办法是把它移到第一个include

您可以在Precompiled header 的 wiki 页面中阅读更多相关信息。

【讨论】:

以上是关于在 Visual Studio 中使用 C++ 类 - 未声明的标识符错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio 中通过 C# 类编译 C++ 代码

C++ 无法在 Visual Studio 中实现抽象类

C++ - 使用 Visual Studio 声明成员函数

哪些编译器选项用于在 Visual Studio 中编译 C++ STL 类/函数?

访问 Matrix 类 (C++) 中的二维数组 (Visual Studio 2010)

在Visual Studio中使用C ++类 - 未声明的标识符错误[重复]