'drv'没有提到类型

时间:2015-01-05 20:26:20

标签: c++ namespaces

一直在寻找,我找不到答案。包括所有路径。我正在创建I类的另一个名称空间中引用一个类。

我收到以下错误: src / app / Application.h:30:9:错误:' drv'没有命名类型

以下代码。任何帮助表示赞赏!

Main.cpp的

int main(int argc, char** argv) {

    app::Application program;

    program.run();

    return 0;
}    

LEDs.h

#ifndef LEDS_H
#define LEDS_H

namespace drv {

    class LEDs {
    public:
        LEDs();
        void InitLEDs(void);
        void SetLEDs(const uint8_t value);
    private:
        static const uint8_t NUM_LEDs = 5;
    };
}

#endif  /* LEDS_H */

Application.h

#ifndef APPLICATION_H
#define APPLICATION_H

namespace app {

    enum State {
        NORMAL = 0,
        ZONE,
        PAIRING,
        STUCK,
        BATT,
        OFF
    };

    class Application {
    public:
        Application();
        void run(void);
        void execute_loop(void);
    private:
        bool IDLE;
        State STATE;
        drv::LEDs Leds; // LINE 30

    };
}
#endif  // APPLICATION_H 

Application.cpp

#include "stdint.h"
#include "stdbool.h"    
#include "../drv/LEDs.h"
#include "Application.h"

namespace app {

    Application::Application() {
        IDLE = false;
        STATE = NORMAL;
    }

    void Application::run(void) {
        Leds.InitLEDs();

        while(1)
        {
            if(IDLE) {
                PowerSaveIdle();
            }
            else {
                execute_loop();
            }
        }

    }

    void Application::execute_loop(void)
    {

    }

}

LEDs.cpp

#include <stdint.h>
#include "LEDs.h"

namespace drv {
    LEDs::LEDs() { 
    }

    void LEDs::InitLEDs() {
        SetLEDs(0xff);
    }

    void LEDs::SetLEDs(const uint8_t value) {
        //Removed for readability
    }
}

1 个答案:

答案 0 :(得分:1)

您在Application.h中缺少#include ...行。在该文件的顶部(或仅在包含防护之后)添加行

#include "LEDs.h"