这个该死的错误是一个众所周知的问题
'{' 标记前的预期类名
好吧,尽管我努力工作并用谷歌搜索,但我无法解决这个错误。对不起。这是我最后的彼岸。
在我的一个项目的 ui.cpp 中我这样做:
#include "wfqueue_proxy_factory.hpp"
好的,这会在我的编译器中引发这个愚蠢的错误:
In file included from wfqueue_proxy_factory.hpp:29,from ui.cpp:28: wfqueue_manager_proxy.hpp:42: error: expected class-name before ‘{’ token
我的项目中有三个类: 首先
// wfqueue_proxy_factory.hpp
#ifndef _WFQUEUE_PROXY_FACTORY_HPP
#define _WFQUEUE_PROXY_FACTORY_HPP
#include "wfqueue_manager_proxy.hpp"
// ...
class WFQueueProxyFactory {
//...
};
#endif
第二
// wfqueue_manager_proxy.hpp
#ifndef _WFQUEUE_MANAGER_PROXY_HPP
#define _WFQUEUE_MANAGER_PROXY_HPP
#include "workflow.hpp"
#include "wfqueue.hpp"
// ...
class WFQueueManagerProxy : public WFQueue { // This is the problem (line 42)
//...
};
#endif
第三
// wfqueue.hpp
#ifndef _WFQUEUE_HPP
#define _WFQUEUE_HPP
#include "workflow.hpp"
class WFQueue {
// ...
};
#endif
请请请注意我使用;在每节课的 } 之后,我检查了我项目中的每个标题以查找此问题,但没有找到任何没有跟随 ; 的类(class)。在它的右括号之后。这对于 workflow.hpp 是有效的,它是一个简单的类(不是从任何类派生的,只是一个普通类)。
WFQueue 是某种接口(interface),我也将此模式与其他类一起使用并且它们有效。 WFQueue 包含一些虚拟的纯方法...无论如何问题不应该出现...我想这是因为我将另一个“接口(interface)”类与其他类一起使用并且它们工作正常。
如果我这样做,这个错误就会消失:
// wfqueue_manager_proxy.hpp
#ifndef _WFQUEUE_MANAGER_PROXY_HPP
#define _WFQUEUE_MANAGER_PROXY_HPP
#include "workflow.hpp"
#include "wfqueue.hpp"
// ...
class WFQueueManagerProxy {
//...
};
#endif
真的不知道如何解决这个问题...请帮助我。 谢谢
最佳答案
您应该在代码上运行预处理器但不编译它,然后检查结果。为此,复制运行失败编译的命令,然后对于大多数编译器,您将删除 -o outfile
选项并添加类似 -E
的内容(请参阅您的仅进行预处理的标志的编译器文档)。
编译器将发出(在标准输出上)整个翻译单元,其中包含所有#includes 等已解析的内容,因此您可以清楚地看到缺少的内容(只需搜索与错误行匹配的代码行,然后查找以查看你找到了什么声明)。如果仍然不清楚问题出在哪里,请将预处理后的输出写入一个文件并尝试对其进行编译。然后,您可以调整预处理后的源代码并查看修复它所需的内容。
关于c++ - Impossible expected class-name before ‘{’ token 错误解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4296785/