2

这是我尝试实例化“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

我收到以下错误消息:错误:“<”标记之前的预期构造函数、析构函数或类型转换

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

4

1 回答 1

-1

我尝试并编译了您的代码(GCC),并进行了两次小的修改。

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

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

因为它们没有被使用。

于 2013-10-07T15:18:35.543 回答