我正在创建一个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 ++相对较新,对于这个错误告诉我的内容,我有点无能为力。有没有人知道为什么会这样?
答案 0 :(得分:0)
我相信两个问题:
问题1 :您的功能应该返回正确的内容吗?您可能希望将其设置为void
,如果它只是要将参数分配给私有成员(在您的情况下它是setter
而不是get
。将void
添加到类中的适当位置以及编写其定义时。
第2期:我认为您无法发送array[]
作为参数。我假设你已经知道了它的大小。相反,您需要发送指向数组的第一个元素的指针以及整个数组的大小。然后,一旦你收到参数,对于每个私有成员,你创建一个接收大小的新数组(或直接填充私有成员)并通过使用收到的指针迭代接收的数组来填充值。
修改:我刚检查过并且传递int array[]
应该没问题。因此,修复问题将解决您的问题。有关详细说明,请参阅here。
答案 1 :(得分:0)
在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[])