我试着解释一下。 我需要一个函数,它获取不同数量的参数(2,3 甚至更多)并基于它返回相应的结构对象:
someStruct funcReturn(bool par1, bool par2, ...)
{
someStruct temp;
if (par1)
{
//...
}
if (par2)
{
//...
}
...
return temp;
}
结构非常简单:
struct ReturnTwo
{
int one;
int two;
};
struct ReturnThree
{
int one;
int two;
int three;
};
最后我需要将这个函数的结果分配给一个由四个对象组成的通用结构(缺少的元素初始化为0):
struct ReturnFour
{
int one;
int two;
int three;
int four;
};
...
ReturnFour returnFour = funcReturn(true, false, ...)
我的问题可以分为两部分:
有没有办法在函数中使用不同数量的参数并将其逻辑指定到函数中?使用模板可以提供吗?
如何在不改变结构组织的情况下将一个结构分配给另一个结构?类似auto 的结构?当然我可以通过 С-style 解决这个问题:
ReturnFour returnFour = {funcReturn(true, false).one,funcReturn(true, false).two,0 ,0}
不过我觉得还有更方便的方法。谢谢!
最佳答案
重载函数对你有用吗?
ReturnOne funcReturn(bool par1) { ... }
ReturnTwo funcReturn(bool par1, bool par2) { ... }
等等?另一种可能性是返回一个可选结构,或一堆整数和标志来表示哪些存在。
如果您打算使用参数的运行时值(而不是参数的数量)来确定函数返回的类型,那么这是不可能的。在那种情况下,您能做的最好的就是我上面给出的动态建议之一,因为它必须只返回一种类型,并且您可能希望该类型指示它包含哪些值。
最后一个想法是,如果你的 bool 值在编译时已知,你可以使用模板参数而不是函数参数,然后有不同的特化,所以 true/false 值的组合可以选择适当的特化。
关于c++ - 根据参数数量从函数返回结构对象并将其分配给一般结构的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45963786/