Visual Studio 2017“未定义类型的使用”

问题描述 投票:0回答:1

我有以下代码,无法使用Visual Studio 2017进行编译并出现错误

错误C2027使用未定义类型'A'

但是在Visual Studio 2012和Visual Studio 2015中可以正常编译。

#include <iostream>

    class A;
    std::string s = typeid(A).name();

    class A
    {
        public:
           int a;
    };

    int main()
    {
        std::cout << "Hello World!\n"; 
    }

谁能建议VS 2017编译到底有什么问题,以及如何解决此问题?

c++11 visual-c++ visual-studio-2017 forward-declaration
1个回答
0
投票
typeid.cpp:5:17: error: 'typeid' of incomplete type 'A' std::string s = typeid(A).name(); ^ typeid.cpp:4:7: note: forward declaration of 'A' class A;

class AA类型的前向声明,因此尚不清楚有关该类型的完整信息。我怀疑Visual Studio 2012和2015的行为将被视为非标准行为。您需要将字符串移动到定义class A {...};之后,以便编译器可以看到类型定义。

© www.soinside.com 2019 - 2024. All rights reserved.