检查私有成员变量是否在一定范围内,如果没有调整

Check whether private member variable is between certain range and if not adjust it

本文关键字:范围内 如果没有 调整 成员 变量 是否 检查      更新时间:2023-10-16

我试图将私有成员变量限制在 0 到 1 之间memVar。如果 memVar 的值小于 0,我希望它设置为 0,如果它大于 1,它应该设置为 1。因此,我想实现一个函数limitMemVar每次设置或更改 memVar 时都会调用该函数。该函数在我的类的模板函数中调用。

我的类看起来像这样:

class Box {
private:
double memVar;     
public: 
// Member functions declaration
void limitMemVar(double actValue);
template <typename T>
void DoSomething(const couble val);
};

我实现的函数看起来像这样:

void Box::limitMemVar(double actValue) {
if ( actValue< (double)0 )
{
this->memVar= (double)0;
}
else if ( actValue > (double)1 )
{
this->memVar= (double)1;
}
}

模板函数如下所示:

template<typename T>
void Box::DoSomething(const double val)
{
//assign memVar the value of val
memVar=val;
//check memVar
this->limitMemVar(this->memVar)
// .... Do more Stuff
}

它是一个更大的软件项目的一部分。我可以构建并运行它,但所有memVar的结果都是 nAn。

但是当我直接将其硬编码到模板函数中时,它会起作用,如下所示:

template<typename T>
void Box::DoSomething(const double val)
{
//assign memVar the value of val
memVar=val;
//check memVar
if ( memVar< (double)0 )
{
memVar= (double)0;
}
else if ( memVar> (double)1 )
{
memVar= (double)1;
}
// .... Do more Stuff
}

怎么了? 我想这是一项非常简单的任务,但我是C++新手,所以任何帮助都值得赞赏。 谢谢你的时间!

>std::clamp就是你要找的。

相关文章: