{错误之前的预期类名

时间:2014-01-04 01:43:03

标签: c++ inheritance arduino

我试图在尝试在更大的文件中实现某些东西之前先掌握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;

错误:

  

错误:'{'标记

之前的预期类名

2 个答案:

答案 0 :(得分:4)

替换

#include <CtrlBrd.h>

#include "CtrlBrd.h"

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

答案 1 :(得分:0)

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