繁体   English   中英

c++ 测试库时出错

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM