测试库时出现 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[])
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'