【发布时间】:2020-11-28 22:19:12
【问题描述】:
我在一个库中有一个基类,出于兼容性原因我不想修改它。该类存储了某些构造后无法修改的设置;必须在构造时提供正确的参数。
我自己的代码包含一个派生自该类的类。派生类的构造函数的参数结构与基类的构造函数不同;参数不是简单地传递给基类构造函数。
有三组预定的参数将用于从派生类构造基类。关于使用这三个中的哪一个的决定取决于派生类构造函数的参数。由于成员初始化器列表中需要基类参数,因此需要在进入派生构造函数的主体之前做出此决定。
在这种情况下,使用需要为 Arduino (Mega) 编译的代码来实现这一点最优雅的是什么?
演示设置的伪代码:
class base{
base(type1 arg1, type2 arg2){/*do something*/}
};
class derived : base{
int variable;
derived(typeA a, typeB b, int c) :
// if a,b match first scenario:
base(1, 2)
// if a,b match second scenario:
base(3, 4)
// if a,b match third scenario:
base(1, 4)
{
variable = c;
}
};
【问题讨论】:
-
这是很多词来混淆描述可以通过代码示例布局的东西。哎呀,有时只是尝试将代码示例放在一起,您就会找到解决方案。
-
好吧,你想到了什么样的代码?带有构造函数的基类和派生类?除此之外,我不想将任何代码放入我原来的问题中,因为这正是我所要求的部分。但是,如果您发现我的问题如此令人困惑,那么可能是告诉我它有什么令人困惑的地方,而不是简单地投反对票。这样我就可以澄清我的意思,我们俩都不必写不是很有帮助的评论。
-
抱怨投反对票刚刚为您赢得了另一票投反对票。如果您需要本网站的帮助,请与我们合作并为我们提供足够的信息来了解问题。
-
@exit 你在哪里被要求提供代码示例以减少混乱,并继续抱怨没有被告知什么是混乱的。你的伪代码清除了你的文本墙中有一堆不清楚的东西。当有人要求你付出更多的努力,而你的回应是被冒犯时,你会被人嫌弃的。总之,希望我的回答对你有用。
-
我认为文本令人困惑的地方在于它将几个概念混杂在一起,形成了一个混乱的混乱局面,相当于spaghetti code 的语言。我试着把事情分开来让它更清楚。我希望我没有在这个过程中改变问题。
标签: c++ inheritance constructor arduino derived-class