我正在尝试为我的struct Polynomial实现一个灵活的构造函数:
struct Polynomial
{
std::vector<float> coefficients;
size_t degree;
};
Run Code Online (Sandbox Code Playgroud)
多项式的程度是可变的.我想要的是拥有像这样的构造函数
Polynomial(float... _coefficients);
Run Code Online (Sandbox Code Playgroud)
我尝试过variadic模板:
template<float... Args>
Polynomial(Args... args);
Run Code Online (Sandbox Code Playgroud)
但浮动是非类型的,所以我做了:
template<typename... Args>
Polynomial(Args... args);
Run Code Online (Sandbox Code Playgroud)
但这允许我的系数是任何东西,而不是我想要的.我知道我可以使用:
Polynomial(size_t _degree, ...);
Run Code Online (Sandbox Code Playgroud)
但它真的不安全.
目前我正在使用:
Polynomial(std::vector<float>);
Run Code Online (Sandbox Code Playgroud)
但这迫使调用如下:
Polynomial P({f1, f2, f3}); // with fn floats
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有一个很好的方法来做到这一点.
谢谢 !
就像在标题上说的那样,我想知道是否有可能阻止执行功能.在我的特定情况下,我正在尝试创建一个operator []并阻止utilisator使用它,如果参数中的值太高:
在.h:
class Vec4
{
float x,y,z,w;
public:
float operator[](const unsigned int i);
}
Run Code Online (Sandbox Code Playgroud)
在.cpp中:
float Vec4::operator[](const unsigned int i)
{
if(i == 0) return x;
if(i == 1) return y;
if(i == 2) return z;
if(i == 3) return w;
}
Run Code Online (Sandbox Code Playgroud)
如果i> = 4,我想"打破"这个功能.目前我只是在制作一个控制台输出并返回0.0f
谢谢你告诉我,如果有办法......或不!