Я смотрел на фабричный метод и изо всех сил пытался найти решение моей проблемы (хотя у меня есть ощущение, что это прямо. Я пытаюсь создать объекты, которые происходят из того же производного класса, который известен в заранее, но у них разные параметры.
class Base
{
public:
Base(){};
~Base(){};
std::string name;
double base_input;
double output;
virtual void relation_function()=0;
};
class Derived1 : public Base
{
public:
double private_input;
int multiplier;
Derived1(std::string , double , double , int);
~Derived1(){};
virtual void relation_function();
};
class Derived2 : public Base
{
public:
double private_input;
int multiplier;
Derived2(std::string , double , int);
~Derived2(){};
virtual void relation_function();
};
параметры вводятся в производный класс на основе их конструкторов.
Derived1::Derived1(std::string input_name, double input_base_input,double input_private_input,
int input_multiplier){
name=input_name;
base_input=input_base_input;
private_input=input_private_input;
multiplier=input_multiplier;
};
Derived2::Derived2(std::string input_name,double input_private_input,int input_multiplier)
{
name=input_name;
private_input=input_private_input;
multiplier=input_multiplier;
void relation_function();};
void Derived2:: relation_function(){output=multiplier*private_input;};
void Derived1:: relation_function(){output=multiplier*base_input*private_input;};
В настоящее время я создаю экземпляр производного класса вручную следующим образом
std::vector<std::string> v(3);
v[0]="a";v[1]="b";v[2]="c";
for (int n=0;n<=2;n++)
Base* pderived1(new Derived1(v[n],2,2,1));
std::vector<std::string> v(2);
v[0]="d";v[1]="e";
for (int n=0;n<=1;n++)
Base* pderived1(new Derived1(v[n],5,9,9));
, что не идеально, мне нужно сначала создать указатель на конструктор производного класса, чтобы «исправить» / «заморозить» некоторые параметры в функциях конструктора, прежде чем из каждого производного класса будет создано несколько экземпляров.
base* (*pconstructor){string, double, double, int) = Derived (string, 2,2,1)
цель состоит в том, чтобы использовать этот указатель на конструктор в качестве основного инструмента для определения параметров перед передачей следующих функций для создания объекта. приведенная ниже функция будет действовать как фабрика для создания количества экземпляров / объектов, требуемых от производного1 или производного, которые могут иметь различные параметры в своих функциях-конструкторах, например, производных2.
base* function(std::vector<string>){ create instances.. }
Я не знаю, как создать указатель для управления параметрами конструктора или функцию, которая будет использоваться для создания экземпляров. Любые подсказки, пожалуйста ..
Спасибо всем заранее за помощь от начинающего c ++!