【发布时间】:2020-10-20 03:26:54
【问题描述】:
我正在尝试像这样做一些有条件的工作:
Type object;
if (cond) {
doSomeStuff();
object = getObject();
doMoreStuff();
} else {
doSomeOtherStuff();
object = getDifferentObject();
doEvenMoreStuff();
}
use(object);
我能想到解决这个问题的唯一方法是复制use 代码(实际上是我的应用程序中的内联代码)并在if 块的每个分支中声明object。如果我想避免重复代码,我必须将它包装在一些使用函数中,就像我上面所说的那样。在实际情况下,这个use 函数可能需要 5+ 个参数来实质上继承上下文。这一切看起来都很混乱,而且无法维护。
if (cond) {
doSomeStuff();
Type object = getObject();
doMoreStuff();
use(object);
} else {
doSomeOtherStuff();
Type object = getDifferentObject();
doEvenMoreStuff();
use(object);
}
解决这个问题的最佳方法是什么? Type 没有默认构造函数,因此 sn-p 1 无法编译。
其他一些语言支持 sn-p 1 - 相关问题:Forcing uninitialised declaration of member with a default constructor
【问题讨论】:
-
doSomeStuff()和doSomeOtherStuff()的相关性是什么? -
@idclev463035818 它的代码我已经抽象出来了。
-
第二个版本(几乎)没有重复代码,这有什么问题?
-
@NathanOliver
Type has no default constructor, thus snippet 1 doesn't compile.
标签: c++ class optimization conditional-statements instantiation