{ 错误之前的预期类名

Expected class name before { error

本文关键字:错误      更新时间:2023-10-16

在尝试在更大的文件中实现某些内容之前,我试图掌握C++中的继承。 我意识到这个问题以前被问过,但我已经搜索了我能找到的所有东西 - 没有什么能指向我修复。 所以希望一个善良的SO成员可以帮助我。

我为 Arduino 编写一个库只是为了清楚。 这是我的代码:

CtrlBrd.h

#ifndef CtrlBrd_h
#define CtrlBrd_h
#include "Arduino.h"
class CtrlBrdClass
{
    public:
        CtrlBrdClass();
};
extern CtrlBrdClass CtrlBrd;
#endif

CtrlBrd.cpp

#include "Arduino.h"
#include "CtrlBrd.h"
CtrlBrdClass::CtrlBrdClass() {
}
int CtrlBrdClass::test()
{
    return 79;
}
CtrlBrdClass CtrlBrd;

CtrlBrdEx.h

#ifndef CtrlBrdEx_h
#define CtrlBrdEx_h
#include <CtrlBrd.h>
class CtrlBrdEx : public CtrlBrdClass {   // <----- Getting the error here!!
public:
    CtrlBrdEx();
    int test2();
};
extern CtrlBrdEx CtrlBrd;
#endif

CtrlBrdEx.cpp

#include "CtrlBrdEx.h"
int CtrlBrdEx::test2() {
    return CtrlBrd.test() +1; 
}
CtrlBrdEx CtrlBrd;

错误:

错误:"{"标记之前的预期类名

替换

#include <CtrlBrd.h>

#include "CtrlBrd.h"
编译器

搜索的位置的确切顺序在这两种情况下都依赖于实现(§16.2 [cpp.include]),但是 gcc 和 VC(以及所有其他编译器,如果我不得不猜测的话)都会在当前目录中搜索引用的形式,但不一定是另一个。

似乎唯一的解决方案是将这两个文件都包含在主 .ino 代码文件的顶部。 Arduino编译器似乎不喜欢包含库中的库...