我是否需要为输入参数的所有可能组合提供构造函数?

时间:2015-05-25 19:00:14

标签: c++ construct

我必须编写一些代码,但我不知道,如何以最简单的方式完成。

在我的计划中有:

Class P
Class HP: public P
Class CP: public P
and class M

我必须编写M构造,才能处理输入参数的不同组合

例如:

HP hp("xxx", "yyy");
HP hp_1("xx1", "yy1");
CP cp("www", "aaa");
CP cp_1("ww1", "aa1");

M m(hp, hp1);
M m_1(hp, cp);
M m_2(cp_1, hp_1);
etc...

有什么想法吗? 我是否为每个组合编写了构造?

1 个答案:

答案 0 :(得分:3)

嗯,从您的问题来看,类HPCP有一个共同的基类P。通过区分MHP,这完全取决于CP实际需要的内容。如果M足以使用P的界面,则可以使用

M提供(单个)构造函数
 class M {
 public:
     M(P& a, P& b) {
         // Do whatever you didn't specify in your question
     }
     // Or pointer references if preferred
     M(P* a, P* b) {
         // Do whatever you didn't specify in your question
     }
 };

即使您需要区分HPCP,您仍然可以在构造函数成员初始化列表或正文中使用dynamic_cast<>(对于提到的两种变体)。