【发布时间】:2022-01-18 13:33:15
【问题描述】:
有没有办法在不创建实用程序的情况下“分配和返回”?这是我的代码:
static int& do_work_(const int* p, int& result)
{
result = (*p) * 10;
return result;
}
template<typename T>
T& assign(const T* p, T& result)
{
result = *p;
return result;
}
int& do_work(const int* p, bool cond, int& result)
{
return cond ? do_work_(p, result) : assign(p, result);
}
我可以在没有assign() 实用程序的情况下实现do_work() 吗?
do_work() 签名的原因是它很方便:
const int value=1;
int i, j;
if (do_work(&value, true, i) == do_work(&value, false, j)) {}
【问题讨论】:
-
你真的想要both 1) 返回结果和 2) 使用其中一个参数作为输出(返回)参数吗?
-
我可能误解了这个问题,但
return result = *p;不正是您所要求的吗? -
return cond ? (result = *p) : (result = *p * 10);?return result = *p * (cond ? 1 : 10); -
那你想要
return cond ? do_work_(p, result) : (result = *p);?我想你现在应该可以弄清楚了。 -
@JackBrown 这并不意味着任何意思,我只是不知道您实际要求什么 - 这是一些示例代码 btw godbolt.org/z/d5r56hbPG
标签: c++ reference return conditional-operator assignment-operator