[英]c++ Error when Testing library
我正在创建一个 Arduino 库,它为我的个人项目采用两个构造函数,但由于某种原因,我不断收到特定于类型的错误,首先让我向您展示结构的进展情况。 所以这是我的文件:
这是头文件:
#ifndef iGA_H
#define iGA_H
class iGA {
public:
getParameters(int soundA[], int soundB[], int parentId[]);
private:
int _soundA[];
int _soundB[];
int _parentId[];
}
cpp文件:
#include <iGA.h>
iGA::getParameters(int soundA[], int soundB[], int parentId[])
{
_soundA = soundA;
_soundB = soundB;
_parentId = parentId;
}
这就是我在 setup() 函数中调用草图中的构造函数的方式:
#include <iGA>
iGA iga;
void setup() {
iga.getParameters(r, r1 , r2);
}
这是错误:
In file included from /home/bargros/Dropbox/iGA__NewBild/iGA__NewBild.ino:34:0:/home/bargros/Arduino/libraries/iGA/iGA.h:10:58: error: ISO C++ forbids declaration of 'getParameters' with no type [-fpermissive]getParameters(int soundA[], int soundB[], int parentId[]);
我知道错误与参数类型有关,或者我可能错误地调用了构造函数,但我也尝试像这样调用它:
iGA iga = getParameters(etc,etc,etc);
我对 C++ 比较陌生,我对这个错误告诉我的内容有点无能为力。 有没有人知道为什么会发生这种情况?
我认为有两个问题:
问题 1 :您的函数应该返回正确的内容吗? 如果它只是为了将参数分配给私有成员(在您的情况下它是一个setter
而不是get
,您可能希望将其设置为void
。 在类内部和编写其定义时的适当位置添加void
。
问题 2 :我认为您不能将array[]
作为参数发送。 我假设您已经知道尺寸。 相反,您需要发送一个指向数组第一个元素的指针以及整个数组的大小。 然后,一旦您收到参数,对于每个私有成员,您将创建一个具有接收到的大小的新数组(或直接填充私有成员),并通过使用收到的指针迭代接收到的数组来填充值。
编辑:我刚刚检查并传递int array[]
应该没问题。 因此,修复问题一将解决您的问题。 有关更多文档,请参见此处。
在 C++ 中,你必须明确一个函数不返回任何东西,你可以说它返回void
:
getParameters(int soundA[], int soundB[], int parentId[]);
需要是
void getParameters(int soundA[], int soundB[], int parentId[]);
和
iGA::getParameters(int soundA[], int soundB[], int parentId[])
需要是
void iGA::getParameters(int soundA[], int soundB[], int parentId[])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.