将类作为参数c ++传递

时间:2017-06-25 06:36:01

标签: 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
}

2 个答案:

答案 0 :(得分:2)

  

有没有办法可以让它看起来像这样?:

不确定。您可以使用成员函数模板。

声明:

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

实现:

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

答案 1 :(得分:0)

Ben cisneros评论的一个例子如下:

class Example { 
  // shared code 
}

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

你可以这样做:

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

您所描述的功能会自动向上转换对象。