특정 유형의 객체를 생성하는 함수가있는 팩토리 클래스가 있습니다. 그러나 현재이 함수는 객체를 인스턴스화하고 프로그램의 주요 범위에서 다시 반환하기 전에 명시적인 매개 변수 집합을 사용합니다. 이러한 객체는 난수를 매개 변수로 사용하여 생성됩니다. 어느 시점에서, 나는 더 적은 또는 더 적은 매개 변수를 취하기 위해 내가 생성 한 객체의 클래스 생성자를 오버로드 할 것이다. 따라서 다양한 팩터 세트로 동일한 객체를 생성하는 팩토리 클래스에서 많은 함수를 만드는 것을 피하기 위해 초기화 목록을 사용할 수 있다고 생각했습니다. 이 솔루션을 구현하려고했지만 비참하게 실패했습니다. 누가 나에게 잘못을 가르쳐 주시겠습니까? 아니면 올바른 방향으로 날 가리 :) 아래 이니셜 라이저 목록을 생성자 함수에 전달하여 특정 종류의 객체를 초기화 할 수 있습니까?
내가#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]를 게시하십시오. –