QT使用std::unordered_map时报错:the code model could not parse an included file, which might lead to incorrect code completion and highlighting

编译时报大量的这种错误:


图片说明




已把无关的代码注释省略了:




#ifndef APROCHDATAMODELREGISTRY_H
#define APROCHDATAMODELREGISTRY_H

// #include ...

#include <memory>
#include <utility>
#include <functional>

#include <QString>

// 只要包含这个文件,就会报错,但不包含就无法使用unordered_map
#include <unordered_map>

APROCH_NAMESPACE_BEGIN

class APROCH_EXPORT AprochDataModelRegistry
{
public:
    using RegisteredModelsCategoryMap = std::unordered_map<QString, QString>;

    // ... 

private:
    RegisteredModelsCategoryMap mRegisteredModelsCategory;

    // ... 
};

APROCH_NAMESPACE_END

#endif // APROCHDATAMODELREGISTRY_H

图片说明

这个是c++ 11以后才有的。
你在你的工程文件(xxx.pro)添加
CONFIG += c++11
然后重新编译就可以了