Arduino C ++ - 尝试实例化具有非类型模板参数的类时出错

时间:2013-10-07 15:11:50

标签: c++ templates parameters arduino non-type

这是我尝试实例化“Melodie”对象的文件:

#include <Melodie.h>

Melodie<5> m(8);

void setup()
{

}

void loop()
{

}

这是“Melodie.h”文件:

#ifndef Melodie_H
#define Melodie_H

#include <Arduino.h>
#include "pitches.h"

template <int NB_NOTES>
class Melodie
{
public:
    Melodie(int pin)
    {
        // Some unimportant stuff
    }
    void addNote(int pitch, int duration)
    {
        // Some unimportant stuff
    }
    void play()
    {
        // Some unimportant stuff
    }

private:
    char notes_[NB_NOTES];
    char durations_[NB_NOTES];
    int  notePointer_;
    int  pin_;
};

#endif

我收到以下错误消息: 错误:'&lt;'之前的预期构造函数,析构函数或类型转换令牌

为什么呢?相同的代码工作(减去arduino特定的东西)在Visual Studio中工作。我以为WinAVR支持C ++?

1 个答案:

答案 0 :(得分:-1)

我尝试编译你的代码(GCC),没有任何问题,只做了两次小修改。

  1. #include <Melodie.h>更改为#include "Melodie.h"
  2. 注释掉以下内容

    //#include <Arduino.h>
    
    //#include "pitches.h"
    
  3. 因为它们没有被使用。