クラス内でクラスオブジェクトを使用する方法、特にオブジェクト間で引数を渡す方法を学習したいと思います。私はCalc.sum
とCalc.sub
の2つのメソッドを提供する例オブジェクトCalc
を作成しようとしています。数学エンジンとして別のオブジェクトPlus
を使用する必要があります。 Plus.add
関数はコンパイルされ、うまく動作します。しかし、calc
にplus
という複数のインスタンスを開始する方法がわかりません。コード:別のクラスの複数のインスタンスを使用するクラス
class Plus{ // This class works well
public:
Plus(int); // Structure
int add(int); // Public method (function)
int myVar; // Public property. Just to hold a value.
private:
int _init; // Class-level private variable
};
Plus::Plus(int init){ // Constructor
_init = init;
}
int Plus::add(int p){ // Method add
return _init + p;
}
/***************************************************************************/
class Calc{
public:
Calc(int); // Structure
int sum(int); // Method sum
int sub(int); // Method sub
int myVar; // Public property
private:
Plus positive(int); // Class-level private object definition ?
Plus negative(int); // This is probably wrong ??
};
Calc::Calc(int init){ // Constructor (also wrong...)
Plus positive(init); // Create object "positive" and pass the initial value
Plus negative(-init); // Create object "negative" and pass the initial value
}
int Calc::sum(int n){
return positive.add(n);
}
int Calc::sub(int n){
return negative.add(n);
}
/***************************************************************************/
Plus two(2); // Create class object two
Calc five(5); // Create class object five
void setup(){
Serial.begin(115200);
Serial.print("two.add(3) = ");
Serial.println(two.add(3)); // Calling instance of class Plus
two.myVar = 100;
Serial.println(two.myVar);
Serial.print("five.sum(3) = ");
Serial.println(five.sum(3)); // Calling instance of class Calc
Serial.print("five.sub(3) = ");
Serial.println(five.sub(3)); // Calling instance of class Calc
}
void loop(){}
私の例では、この記事に触発さ:http://arduinoetcetera.blogspot.cz/2011/01/classes-within-classes-initialiser.htmlが、コードは
1はCalc
2内Plus
の複数のインスタンスを宣言するためにどのように)1つのインスタンスの存在である)です用語(コメント)は正しい?
によって置き換え
Calc
の定義にも間違っています。別の何かが間違っているに違いない。申し訳ありませんが、私は一日中グーグルで解決をしています。疲れているかもしれません。 – Combinatix
"手作業による手動編集"で別のエラーが見つかりました:)、私の編集を参照してください。次回はコンパイルエラーを投稿してください。 "それはコンパイルされません"だけで十分ではありません。 –