-2

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

在我的程序中有:

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...

任何想法?每个组合我都有写构造吗?

4

1 回答 1

3

好吧,从你的问题看来,这些类HPCP有一个共同的基类P。这完全取决于M通过区分HP和实际需要什么CP。如果足以M使用P's 接口,您可能可以提供一个(单个)构造函数来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
     }
 };

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

于 2015-05-25T19:10:57.110 回答