gpt4 book ai didi

c++ - 有没有一种方法可以检查发送到变量的值是否已经在该var下正确类型?

转载 作者:行者123 更新时间:2023-12-01 14:39:23 26 4
gpt4 key购买 nike

我找不到一种方法来检查传递给变量的值是否正确。

例如:我已经将char传递给int变量,并且我想检查它是否在int(?)内部是int。我考虑过检查发送的参数是否在ascii表中,但是我没有找到最佳解决方案。一些代码:

Martice m('q');

什么时候
Martice (int _arg) : pass(_arg) { allocation(); };

我知道我可以使用此方法检查输入:
if (std::cin.fail() == true) {
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}

但我的意思是在将其作为参数传递之后再进行检查。

最佳答案

如果要区分字符和整数,则可以使用Martice构造函数的重载。因此,您有一个采用int的构造函数,而一个采用char的构造函数。

如果要禁止传递char,则可以将char重载标记为已删除:

explicit Martice(char) = delete;

如果要允许它,但将数字字符转换为数字,则要复杂一些,因为您必须使用default-construction(如果可能),然后转换字符并使用赋值:
explicit Martice(char _arg) : Martice()  // Delegating to default constructor
{
if (!std::isdigit(_arg))
{
// TODO: Not a digit, do something, perhaps throw an exception
}
else
{
pass = _arg - '0'; // Convert digit to number
allocation();
}
}

注意将 explicit用于构造函数。那将不允许从字符到 Martice对象的隐式转换。

关于c++ - 有没有一种方法可以检查发送到变量的值是否已经在该var下正确类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61911472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com