gpt4 book ai didi

c++ - Arduino:如何使用其他类的对象作为我的库的参数?

转载 作者:太空宇宙 更新时间:2023-11-04 13:01:56 25 4
gpt4 key购买 nike

在我创建的库中尝试使用 Servo.h 时,我都快崩溃了。编译器总是给我同样的错误,就好像它不识别我的库中包含的类。

我正在尝试创建一个新类,它的一个属性是一个 Servo 对象,我应该将其传递给构造函数。无论我如何尝试,在尝试编译我的草图时,我总是收到相同的错误消息:

In file included from /home/nezah/Arduino/My sketches/CameraShutter/CameraShutter.ino:8:0: /home/nezah/Arduino/libraries/Shutter/Shutter.h:13:19: error: expected ')' before '*' token Shutter(Servo *servo);

似乎 include 语句没问题,因为如果我把它弄错或完全删除,我会收到不同的消息。我已经尝试为 <> 更改“”,甚至将源代码复制到一个文件夹中并使用完整路径。只要我不弄乱它(故意),就没有变化。我已经读过 this .

我还尝试将其作为指针传递,使用 Shutter(Servo* servo)Shutter(Servo *servo)Shutter(Servo& servo) 。同样的错误信息。

在某个 arduino.cc 论坛上,我读到我宁愿忘记它并避免在其他库中使用库,但我敢打赌这是可能的。

有没有好心人给我一些提示,告诉我怎么做?

我给你留下了我正在尝试编写的库的 .h 和 .cpp 的一部分(顺便说一下,它把伺服器变成了物理按钮按压器,但具有突发功能)。

 /*
* Shutter.h - Library to make a photocamera shutter out of a servo
* alternatively it could press any physical button with a servo.
*/

#ifndef Shutter
#define Shutter
#include "Servo.h"

class Shutter {
public:
Shutter(Servo *servo);
Servo getServo();

void shut();
private:
Servo _servo;
}

#endif

这是我的.cpp:

/*
Shutter.cpp - Library for flashing Shutter code.
Created by David A. Mellis, November 2, 2007.
Released into the public domain.
*/

#include <Arduino.h>
#include "Servo.h"
#include "Shutter.h"

Shutter::Shutter(Servo *servo) {
_servo = servo;
}

注意:如果我删除一些代码并去掉构造函数的“Servo”部分,我会在“getServo()”代码上收到一条错误消息。问题似乎是编译器无法将“Servo”识别为我的库中的有效类型。

提前致谢!

最佳答案

在您的类的构造函数中,您正在传递一个 Servo 类型的指针,因此您必须将该值存储在另一个指针中。为此,您必须更改:

*.h

#ifndef SHUTTER_H
#define SHUTTER_H
#include "Servo.h"

class Shutter {
public:
Shutter(Servo *servo);
Servo *getServo() const;

void shut();
private:
Servo *_servo;
}

#endif

*.cpp

Shutter::Shutter(Servo *servo) {
_servo = servo;
}


Servo *Shutter::getServo() const
{
return _servo;
}

使用:

Servo servo;
Shutter shuter(&servo)

关于c++ - Arduino:如何使用其他类的对象作为我的库的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43789757/

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