#ifndef IRSensor_h
#define IRSensor_h
#include "Arduino.h"
#include "Turret.h"
class IRSensor
{
private:
int m_Pin;
int state;
Turret* m_Turret;
bool m_LastState;
public:
IRSensor(int pin, Turret* turret);
void Monitor();
int getState();
};
#endif
上面给出了以下错误“Turret没有命名类型”,这是由于我私下宣布一个Turret *指针。为什么我不能声明这个对象指针?
这是我的炮塔代码
#ifndef Turret_h
#define Turret_h
#include "Stepper.h"
#include "IRSensor.h"
class Turret:public Stepper
{
private:
int m_Enable;
int m_Direction;
int m_Step;
IRSensor* IRPointer;
public:
Turret(int en, int dir, int clk, int sensorPin);
void IRChanged();
void Monitor();
};
#endif
这是炮塔的cpp文件
#ifndef Turret_cpp
#define Turret_cpp
#include "Stepper.h"
#include "Turret.h"
#include "IRSensor.h"
#include "Arduino.h"
Turret::Turret(int en, int dir, int clk, int sensorPin):Stepper(en,dir,clk)
{
IRPointer = new IRSensor(sensorPin,this);
}
void Turret::IRChanged()
{
Stop();
}
void Turret::Monitor()
{
if(IRPointer->getState()==0)
{
//Serial.println("Turret Stopping");
Disable();
Stop();
}
else
{
//Serial.println("Turret Starting");
Enable();
Start();
}
}
#endif