-2

我正在玩我的树莓派和 gpio。一切都很好,我现在正试图在每次移动矩形碰到屏幕边缘时点亮 LED 灯。

为了帮助打开和关闭 LED,我有一个 BlinkLED 类

#pragma once

#include "GPIOClass.h"

class Blienter code herenkLED
{
 public:
  BlinkLED(string gpionum);

  void update(float dt);
  void setOnfor(int ms);
  void finish();

 private:
  GPIOClass m_LED;
  int m_time2Shine;

};

在另一个名为 Morph.cpp 的文件中,我尝试运行 setOnFor(1000)

#include "Morph.h"
#include "BlinkLED.h"

template <typename T>
Morph<T>::Morph()
{
};

template <typename T>
Morph<T>::Morph(T min, T max, T v)
  : m_min(min)
  , m_max(max)
  , m_v(v)
  , m_cycles(0)
  , m_LED(NULL)
{
  m_current = getRandom(min, max);
  m_period = getRandom(min, max);
  m_flip = (getRandom(0, 1) > 0);
};
template <typename T>
void Morph<T>::setLED(BlinkLED* LED)
{
  m_LED = LED;
}

template <typename T>
T Morph<T>::update(float dt)
{
  if(m_current >= m_max)
    {
      m_flip = true;
      if(m_LED)
    m_LED->setOnFor(1000);
    }
  else if(m_current <= m_min)
    {
      m_flip = false;
      if(m_LED)
    m_LED->setOnFor(1000);
    }
  else if(m_cycles >= m_period)
    {
      m_flip= !m_flip;
      m_period = getRandom((int)m_min, (int)m_max);
      m_cycles = 0;
    }

  float direction = m_flip ? -1.0 : 1.0;
  m_current += direction * (T)getRandom((T)0, (T)m_v);
  m_cycles += 1;


  return m_current;

};


template class Morph<int>;
template class Morph<float>;

当我这样做时,我得到 2 个错误,每个 setOnFor(1000) Morph.cpp:34:9 错误:BlinkLED 类没有名为 setOnfor 的成员 Morph.cpp:40:9 错误:BlinkLED 类没有名为 setOnfor 的成员

有人有什么想法吗?我真的很想看这个作品:D

整个代码可以在 https://github.com/Reicher/FlyingCubes找到

4

1 回答 1

2

您的函数声明和定义是命名的setOnfor,而您调用一个名为 的函数setOnFor。C++ 中的标识符区分大小写。您需要选择一个并保持一致。

于 2013-02-16T14:57:41.720 回答