c ++测试库时出错

时间:2016-04-28 19:45:52

标签: c++ arduino

我正在创建一个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 ++相对较新,对于这个错误告诉我的内容,我有点无能为力。有没有人知道为什么会这样?

2 个答案:

答案 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[])