gpt4 book ai didi

c++ - 如何处理传递给构造函数参数的错误值?

转载 作者:太空狗 更新时间:2023-10-29 23:00:47 26 4
gpt4 key购买 nike

我有我的类(class)堆栈

class Stack
{
public:
Stack(unsigned int Size)
{
size = Size;
}

private:
unsigned int size;
void* Block;
};

int _tmain(int argc, _TCHAR* argv[])
{
Stack x(-1);
return 0;
}

我想确保即使我将负值传递给构造函数参数该对象不会被构造,但是当我给出 -1 值时,它正在接受它并且可变大小值为 4294967295,据我所知,在删除 sing 位后与 -1 相同......

那么我该如何处理这种情况呢?我应该抛出异常吗?或者只是在错误值的情况下采用默认值?

最佳答案

如果您使用的是 Visual C++ 编译器 (MSVC),作为一般规则,您可能希望在 /W4 编译您的代码(即警告级别 4) ,因此编译器会更频繁地指出,并有助于识别程序员的错误。

例如:

C:\Temp\CppTests>cl /EHsc /W4 /nologo test.cpp

warning C4245: 'argument' : conversion from 'int' to 'unsigned int',
signed/unsigned mismatch

编辑

此外,您可能希望将构造函数标记为explicit,以避免从整数到 Stack 类实例的隐式伪造转换。

关于c++ - 如何处理传递给构造函数参数的错误值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32893646/

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