c++ - 检查构造函数参数

标签 c++

class item
{
    int i;

  public:
    item(int no) {

    }
};

我想检查构造函数参数。如果发现它持有负值,则应停止对象创建。

这里不能使用异常,因为目标系统不支持异常。

最佳答案

没有抛出就无法停止对象的创建。您可以做的最好的事情是设置一个“无效参数”标志,您必须在之后检查该标志,如果为真,则丢弃该对象而不使用它。

根据您的要求,使用工厂方法创建对象可能会更好——这样,您可以在调用构造函数之前进行检查:

class item
{
    int i;
public:
    static item* create(int no) {
        if (no < 0) {
            return 0;
        }

        return new item(no);
    }

private:
    item(int no) {

    }
};

你可以这样使用

item* myItem = item::create(-5);
if(!myItem) {
    // failed
}

但是,这会强制您在堆上分配所有 item 实例。

关于c++ - 检查构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7361077/

相关文章:

c++ - 并发:C++11 内存模型中的原子性和 volatile

c++ - 为什么我不能从主函数返回更大的值?

c++ - 在 Windows 7 上用 C++ 复制文件夹的最佳方法

c++ - 如果用户从数组中输入数字,我如何获取二维数组的索引

c++ - 仅当它不是模板时才编译具有结构类型的同名变量

c++ - 如何将文件中的数据输入到 C++ 中的矩阵中?

c++ - 优化:在多个对象使用之前预分配一 block 堆内存 - yield ?

c++ - 在 C++ 中使用访问者模式作为解释器

c++ - 通过包装对象上的函数指针调用类方法时出错

c++ - 有效地将文件中的模式存储在 vector 中