2016-04-28 34 views
-1

我正在创建一个Arduino库,它为我的个人项目提供了两个构造函数,但由于某种原因,我不断收到一个类型特定的错误,首先让我告诉你结构如何。所以这里是我的文件:C++测试库时出错

这是头文件:

#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; 
} 

这该是多么IM几乎调用草图中的构造,内设置()函数:

#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++和IM有点无能至于这个错误告诉我什么。有没有人有任何想法,为什么发生这种情况?

+0

你的getParameters应该返回一些东西。**提示**:**之前应该有东西** iGA :: getParameters – Incomputable

+0

'getParameters(int soundA [],int soundB [],int parentId []);'至少应该是'void getParameters(int soundA [],int soundB [],int parentId []);'。 –

+0

试图添加无效,仍然得到相同的错误 - 将尝试@FirstStep建议。 – Bargros

回答

0

我相信两个问题:

问题1:你的函数应返回正确的事情?如果只是为了将参数分配给私有成员(您的情况为setter而不是get),您可能需要将其设置为void。将void添加到班级内部以及写入其定义的适当位置。

第2期:我认为你不能发送array[]作为参数。我认为你已经知道这个尺寸。相反,您需要发送指向数组第一个元素的指针以及整个数组的大小。然后,一旦接收到参数,对于每个私有成员,您将创建一个接收大小的新数组(或者直接填充私有成员),并通过使用收到的指针迭代接收的数组来填充值。

编辑:我刚才检查并通过int array[]应该没问题。所以修复问题将解决您的问题。有关更多文档,请参阅here

+0

问题1和2解决了我所有的问题,谢谢队友。 – Bargros

+0

@bar高兴它帮助:)请upvote,如果你发现它有用 –

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