我必须编写一些代码,但我不知道,如何以最简单的方式完成。
在我的计划中有:
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...
有什么想法吗? 我是否为每个组合编写了构造?
答案 0 :(得分:3)
嗯,从您的问题来看,类HP
和CP
有一个共同的基类P
。通过区分M
和HP
,这完全取决于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
}
};
即使您需要区分HP
和CP
,您仍然可以在构造函数成员初始化列表或正文中使用dynamic_cast<>
(对于提到的两种变体)。