我一直在尋找工廠方法並努力尋找解決方案來解決我的問題(儘管我感覺它是直接向前的。我試圖創建來自相同派生類的對象,這是事先知道,但他們有不同的參數。具有不同參數的對象工廠
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));
這是不理想的,我需要先創建一個指針到派生類的一些實例的前「修理」 /「凍結」一些在構造函數的paramters的來自被創建的構造每個派生類。
base* (*pconstructor){string, double, double, int) = Derived (string, 2,2,1)
目的是使用該指針構造爲主要工具傳遞到以下功能創建對象前dicate的PARAMATERS。下面的函數將作爲一個工廠來創建衍生物1或衍生物所需的實例/對象的數量,這些實例/對象可能在其構造函數中具有不同的參數,例如derived2。
base* function(std::vector<string>){ create instances.. }
我不知道如何創建的指針來操作構造函數的參數也將被用來創建實例。任何線索的功能,請.. 感謝大家提前從您的幫助C++新手!
問題是什麼? – iammilind
我不知道如何創建指針來操作構造函數的參數,也沒有將用於創建實例的函數.. –
字廠在這裏爲我提出了一個大紅旗。除非你提供了它的功能描述,否則這將會令人困惑 – Ulterior