5

あきらめる。グーグルも私やドキュメントに答えません。ここで何が問題なのですか?

"x.cpp:7からインクルードされたファイル:/Users/user/Dropbox/Projects/Arduino/libraries/Range/Range.h:27:エラー:数値定数/ Users / user / Dropbox / Projects /Arduino/の前に識別子が必要ですlibraries / Range / Range.h:27:エラー:数値定数の前に'、'、または'...'が必要です"

//
//  Range.h
//  Handles range to ground and altitude
//
//  Created by x on 2013-03-27.
//
//

#ifndef RANGE_H_
#define RANGE_H_

#include "NewPing.h"

#define BOTTOM_RF_PIN       5
#define BOTTOM_RF_ECHO_PIN  10
#define BOTTOM_RF_MAX       200


class Range {
public:
    Range();
    void init();
    float toGround();
    float toCeiling();
    float altitude();
private:
    NewPing bottomRF(BOTTOM_RF_PIN, BOTTOM_RF_ECHO_PIN, BOTTOM_RF_MAX);

};

#endif /* RANGE_H_ */
4

3 に答える 3

9

それ以外の

NewPing bottomRF(BOTTOM_RF_PIN, BOTTOM_RF_ECHO_PIN, BOTTOM_RF_MAX);

試す

NewPing bottomRF(int, int, int);

理由:リテラルを受け取る関数を宣言することはできません。タイプのみ。intは型で、510と200はリテラルです。

于 2013-03-27T05:51:16.640 に答える
2

bottomRF関数ではなくデータメンバーであり、クラス宣言でインスタンス化しようとしている場合:

クラス宣言でクラスタイプのアイテムをインスタンス化することはできません。これを行うのに適した場所は、コンストラクターの初期化リストです。

public:
    Range() :bottomRF(BOTTOM_RF_PIN, BOTTOM_RF_ECHO_PIN, BOTTOM_RF_MAX) {}
于 2013-03-27T05:52:50.273 に答える
2

パラメータの種類を指定する必要はありませんか?例えば

NewPing bottomRF(int a1 = BOTTOM_RF_PIN, int a2= BOTTOM_RF_ECHO_PIN, int a3 = BOTTOM_RF_MAX);
于 2013-03-27T05:54:26.223 に答える