プログラムの目的は、スピーカエンクロージャのシミュレーションスクリプトを生成することでした。親データメンバの値を子クラスに渡す
私はスピーカーを定義するクラススピーカーを持っています。
すべてのエンクロージャの共通パラメータを含む親クラスエンクロージャ。
自分自身の特別なプロパティを持つ子クラスです。親クラスのメンバーデータは私のプログラムの場合は
class speaker
{
}
class Enclosure
{
int m_boxHeight;
speaker * m_speakerBass;//...
public://some functions
}
class closedBox : public Enclosure
{
public:
closedbox(speaker &speakerbass):Enclosure(speakerbass)// some functions
protected:
int paramclosed1;//...
}
int main()
{
speaker speakerbass;
cout <<endl<< "Please choose in the available enclosure proposals" << endl;
cout << "1 Closed box enclosure" << endl;
// cout << "2 Bass reflex enclosure" << endl;
// cout << "3 and so on..." << endl;
int choice;
cin>>choice;
switch (choice)
{
case 1:
closedbox * ClBox2Simu;
ClBox2Simu= new closedbox(speakerbass);
delete ClBox2Simu;
break;
case 2:
//... same but with bassreflex class child
break;
default:
cout<<"Then good bye";
}
return 0;
}
ことができます:私は完全に正常に動作しますが、私は毎回エンクロージャの基本プロパティを再計算する必要がある最初のプログラムを取得した多型と継承を使用して
子どもに与えられる。つまり、Enclosure
のボックスサイズは、各子クラスbassreflex
またはclosedbox
で同じです。
への道があればこのように、私は今になります。
が
が
は親パラメータ(問題)を持つ子どもを作成するには、最初の最初の一般的な計算を行う親クラスを作成します
子=親は禁止されています。このコードのアイデアで :
class speaker
{
public: // some functions
protected:
int fs;
int paramSpeaker2; //...
}
class Enclosure
{
public: //some common function
protected:
int m_boxHeight;
speaker *m_speakerBass //...
}
class closedBox : public Enclosure
{
public:
closedbox(); // some functions
protected:
int paramclosed1; //...
}
class bassreflex : public Enclosure
{
public:
bassreflex(); // some functions
protected:
int paramclosed1; //...
}
int main()
{
Enclosure initialBox;// calculate dimension,choose speaker...
closedbox * ClBox2Simu;
ClBox2Simu= initialBox;// child= parent which is forbidden
//do stuff concerning closedbox
delete ClBox2Simu;
bassreflex * BassReflex2Simu;
BassReflex2Simu= initialBox; //forbidden
//do stuff concerning bassreflex
delete BassReflex2Simu;
//... and so on for other child class using enclosure
delete initialBox
return 0;
}
が、それは明らかだホープ!
なぜ子クラスを直接初期化しないのですか? [Constructors and Member Initializer List](http://en.cppreference.com/w/cpp/language/initializer_list) – Danh
「基本プロパティの再計算」がどこで(または、なぜ)行われたのか分かりません。 – UnholySheep
最初の例の動的割り当ては完全に不要です。 – molbdnilo