gpt4 book ai didi

class - Arduino:用户自定义类型 "does not name a type"

转载 作者:行者123 更新时间:2023-12-01 01:04:10 25 4
gpt4 key购买 nike

我在用 Arduino 编写类(class)时遇到了一些问题。这是一个名为“Jerry”的类。它包含三个用户定义类的实例,分别称为 Mouth、Move 和 Injection。 Arduino IDE 提示“Mouth”没有命名类型,“Move”没有命名类型。如何让 Arduino 将 Mouth 和 Move 识别为有效类型?

   #ifndef JERRY_H
#define JERRY_H
include "Button.h"
include "Injection.h"

class Jerry
{

protected:
int BGL;
double protein_conc;

public:
Jerry(int, int);
Mouth mth;
Move mv;
Injection inj;
volatile long prev_interrupt_time;
};

#endif // JERRY_H

(# 符号被删除,因为它搞砸了 StackOverflow 中的格式)

Mouth、Move 和 Injection 类声明如下:

    #ifndef BUTTON_H
#define BUTTON_H
include "Jerry.h"

class Button
{
public:
void setPin(int);
int getPin();
bool check(Jerry);
virtual void run();
protected:
int pin;
};

class Mouth : public Button
{
public:
int detectFood();
void run();
};

class Move : public Button
{
public:
bool checkLaughing();
void runLaughing();
bool checkSleep();
};

#endif // BUTTON_H

#ifndef INJECTION_H
#define INJECTION_H


class Injection
{
public:
void setPin(int, int, int, int);
void checkInjection();

void checkInjectionSite();
protected:
int pin1;
int pin2;
int pin3;
int pin4;
};

#endif // INJECTION_H

任何帮助将不胜感激。

最佳答案

有两个循环依赖。

  1. Jerry类定义使用Mouth,Mouth继承Button,Button期望已经定义了 Jerry 类。
  2. Jerry的类定义使用了Move,Move继承了Button,Button期望已经定义了 Jerry 类。

要解决这些问题,请使用前向声明。:-)

关于class - Arduino:用户自定义类型 "does not name a type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11145543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com