2017-06-25 5 views
0

の代わりにこれを行うよう、クラスを渡すと、すべてのための冗長コード作り続ける:パラメータC++

Molecule::Molecule(Hydrogenyx& h){ 
    //some code 
} 

Molecule::Molecule(Carbonyx& c){ 
    //same code as hydro 
} 

Molecule::Molecule(Sulphuryx& s){ 
    //same code 
} 

すると、それはこのようになりますので、私はちょうどそれを作ることができる方法?:

があります
Molecule::Molecule(x){ 
    //code that can apply to all 
} 
+3

なぜあなたはすべての原子に対して別々のクラスを持っていますか?私はとても混乱しているようだ。 – StoryTeller

+0

化学元素で作業しているので、C++で継承と多型を利用する必要があります。要素を言うクラスを作成し、化学要素が必要に応じて属性とプロパティを継承するようにします。次に、このようなことをすることができます**分子:分子(要素*要素){//すべてに適用できるコード} **。 –

答えて

2

それはこのようになりますので、?:

確かに、私はちょうどそれを作ることができる方法があります。メンバ関数テンプレートを使用できます。

宣言:

template <typename T> Molecule(T& t); 

実装:あなたはこのような何かを行うことができると

class Example { 
    // shared code 
} 

class Hydrogenyx : public Example { 
    // code for Hydrogenyx 
} 

template <typename T> 
Molecule::Molecule(T& t){ 
    // The common code. 
} 
0

はベンシスネロスコメントの例は次のようになります

Example* ex; 
Hydrogenyx hx(/*Construcr things*/) 
ex = &hx; 

あなたが説明したような機能は、オブジェクトを自動的にアップキャストします。

+0

例を書いてくれてありがとう@fraxxz :-) –