"written out" 等价于三元赋值是什么?
what is the "written out" equivalent of a ternary assignment?
我有一个结构是非默认构造。
我想根据条件为该结构的对象分配不同的值。
由于该结构是非默认构造的,因此不可能声明它的单元化对象。
但是,可以用三元来做到这一点:
struct foo {
foo(int a);
};
foo generateFoo1() {
return foo(1);
}
foo generateFoo2() {
return foo(2);
}
int main() {
bool test = false;
//compiles fine
foo f = test ? generateFoo1() : generateFoo2();
//the following does not compile
foo f2;
if(test) {
f2 = generateFoo1();
}else {
f2 = generateFoo2();
}
}
三元赋值的“写出”等价物是什么?
我的想法很简单,三元组是我眼中的刺。我想尽可能保持 clean/readable。
添加工厂功能可以帮助您解决这个问题。使用
foo make_foo(bool test)
{
if (test)
return generateFoo1();
else
return generateFoo2();
}
让您拥有像
这样的代码
foo f = make_foo(test);
我有一个结构是非默认构造。
我想根据条件为该结构的对象分配不同的值。
由于该结构是非默认构造的,因此不可能声明它的单元化对象。
但是,可以用三元来做到这一点:
struct foo {
foo(int a);
};
foo generateFoo1() {
return foo(1);
}
foo generateFoo2() {
return foo(2);
}
int main() {
bool test = false;
//compiles fine
foo f = test ? generateFoo1() : generateFoo2();
//the following does not compile
foo f2;
if(test) {
f2 = generateFoo1();
}else {
f2 = generateFoo2();
}
}
三元赋值的“写出”等价物是什么? 我的想法很简单,三元组是我眼中的刺。我想尽可能保持 clean/readable。
添加工厂功能可以帮助您解决这个问题。使用
foo make_foo(bool test)
{
if (test)
return generateFoo1();
else
return generateFoo2();
}
让您拥有像
这样的代码foo f = make_foo(test);