class X {
X(int, int); //constructor
void func();
}
class Y {
public int func() {
X x(5,7);
// some other random operations.
x.func();
}
}
现在,如果我必须基于一些条件初始化x,我该如何做?做以上的不美观的方式如何在C++中有条件地初始化一个对象
class Z {
// only refer to x when mycond is true.
public int func(boolean mycond) {
if(mycond)
X x(5,7);
//same random operations;
if(mycond)
x.func();
}
}
一种方法是:
class Z {
// only refer to x when mycond is true.
public int func(boolean mycond) {
if(mycond) {
X x(5,7);
//same random operations;
x.func();
}
else {
//same random operations
}
}
}
我在寻找的东西更简单,我没有重复的代码。
是否有任何理由不能在“随机操作”之后在条件内声明/初始化'x'? – Mankarse 2012-01-30 07:37:07
你真的需要这个吗?做这些*“随机操作”*以任何方式依赖于'x'?如果是这样,那么你可能在那里有一些令人讨厌的副作用,你最好摆脱。也许你可以给我们一个随机操作的例子,或描述你的总体目标。 – 2012-01-30 07:44:23
你可以看看'boost :: optional'。 – 2012-01-30 07:44:30