繁体   English   中英

将类作为参数传递给c ++

[英]passing a class as a parameter 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
}

有什么办法可以使它看起来像这样吗?:

当然。 您可以使用成员函数模板。

宣言:

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

实现方式:

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

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

class Example { 
  // shared code 
}

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

这样,您可以执行以下操作:

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

像您描述的那样的功能将自动向上转换对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM