而不是这样做,并继续为所有事情制作冗余代码:
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
}
答案 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;
您所描述的功能会自动向上转换对象。