【发布时间】:2018-04-28 10:57:18
【问题描述】:
我正在尝试为我的 struct Polynomial 实现一个灵活的构造函数:
struct Polynomial
{
std::vector<float> coefficients;
size_t degree;
};
多项式的次数是可变的。 我想要的是有一个像
这样的构造函数Polynomial(float... _coefficients);
我试过可变参数模板:
template<float... Args>
Polynomial(Args... args);
但 float 是非类型,所以我已经完成了:
template<typename... Args>
Polynomial(Args... args);
但这允许我的系数是任何东西,而不是我想要的。 我知道我可以使用:
Polynomial(size_t _degree, ...);
但这真的很不安全。
目前我正在使用:
Polynomial(std::vector<float>);
但这会强制调用如下:
Polynomial P({f1, f2, f3}); // with fn floats
所以我想知道是否有一个好的方法来做到这一点。
谢谢!
【问题讨论】:
-
“但这迫使呼叫变得像”......这有什么问题?恕我直言,对于调用者来说,接受向量比接受可变参数要灵活得多
-
^那个。如果用户输入任意系数会怎样?
标签: c++ c++11 templates variadic-templates