2016-04-28 13 views
-1

私のパーソナルプロジェクト用に2つのコンストラクタを使用する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; 
} 

そして、これはかなりの範囲内で、スケッチでコンストラクタを呼び出す方法イムですセットアップ()関数:

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

私はエラーが引数の型で行うか、多分間違ってコンストラクタを呼び出すイムするために何かを持って知っているが、私はまた、このようにそれを呼び出してみました:Cへの比較的新しい

iGA iga = getParameters(etc,etc,etc); 

イム++と少し無知イムこのエラーが私に何を伝えているかについて。誰にもこれがどうして起こるのか、何らかのアイデアがありますか?

+0

getParametersは何かを返す必要があります。**ヒント**:** iGA :: getParametersの前に何かがあるはずです – Incomputable

+0

'getParameters(int soundA []、int soundB []、int parentId []);'少なくともgetParameters(int soundA []、int soundB []、int parentId []); '。 –

+0

voidを追加しようとしましたが、同じエラーが表示されます。@ FirstStepが提案した内容を試してみます。 – Bargros

答えて

0

私は二つの問題と考えている:

問題1:あなたの関数は、右の何かを返す必要がありますか?プライベートメンバーにパラメータを割り当てようとしたばかりの場合はvoidに設定することができます(setterであり、ケースではgetではありません)。クラス内とその定義を書くときの両方の適切な場所にvoidを追加します。

問題2array[]をパラメータとして送信できないと思います。そして私はあなたがすでにサイズを知っていると仮定します。その代わりに、配列全体のサイズとともに、配列の最初の要素を指すポインタを送る必要があります。次に、パラメータを受け取ったら、すべてのプライベートメンバーに対して、受け取ったサイズの新しい配列を作成します(またはprivateメンバーを直接入力します)。受け取った配列を使用して受信した配列を反復して値を入力します。

を編集してください:int array[]は問題ありません。だから問題1を修正することで問題が解決されます。詳細については、hereを参照してください。 Cでは

+0

問題1と2は私の問題をすべて解決しました。ありがとう。 – Bargros

+0

@bar喜んで助けました:)あなたが役に立つと思ったら、upvoteしてください –

0

++あなたは関数は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[]) 
関連する問題