特定の種類のオブジェクトを生成するファクトリクラスがあります。しかし、現時点では、この関数は、オブジェクトをインスタンス化してプログラムの主要スコープに戻す前に、明示的なパラメータセットを取ります。これらのオブジェクトは、パラメータとして乱数を使用して生成されます。ある時点で、オブジェクトのクラスのコンストラクタをオーバーロードして、多かれ少なかれパラメータを取得します。したがって、さまざまなパラメータを使って同じオブジェクトを生成するファクトクラスの多くの関数を作成することを避けるために、私は初期化リストを使用できると考えました。私はこのソリューションを実装しようとしましたが、私は悲惨に失敗しました。誰かが私に啓発してもらえますか?それとも、正しい方向に私を指す:)以下 イニシャライザリストをジェネレータ関数に渡すことで、特定の種類のオブジェクトを初期化することができます
は私が#include <iostream>
#include <initializer_list>
// iostream
using std::cout;
using std::endl;
// initializer list
using std::initializer_list;
// Class of which type I want to generate objects;
class Subject{
private:
double x;
double y;
public:
Subject(const double x, const double y); // <-- This may vary in parameter set!
void print();
};
// Class which is responsible for generating objects of type specified above;
class Generator{
public:
Generator();
Subject generate(initializer_list<double> params);
};
// Subject Member Implementation
Subject::Subject(const double x, const double y):x(x), y(y){}
void Subject::print(){
std::cout << "x: " << x << "y: " << y << std::endl;
}
// Generator Member Implementation
Generator::Generator(){}
Subject Generator::generate(initializer_list<double> params){
Subject subject = params;
return subject;
}
// Main Body
int main(){
Generator generator;
double params[2] = {.1,.2}; // <-- arbitrary set of parameter(s)
Subject subject = generator.generate({params}); // <-- object cration;
subject.print();
}
あなたは_initializerのlist_を取る関数を書いていますが、それに_array_に合格しようとしていますか? – Steve
私はそれがうまくいくと思った。私が 'auto test = {parameters}'を実行すると正しいタイプが得られるからです。 :C++は私の最初の言語ではないので、私はいくつかの指針を感謝します:) –
[mcve]を投稿してください。 –