簡體   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