如何检查是否提供了可选的类参数?

时间:2016-08-04 09:29:08

标签: c++

说我有这个结构

struct float2 {
    float x;
    float y;
}

然后在某处有一些构造函数

struct constructable {
    constructable(float2 opt = float2()) {
        if (opt == float2()) { //doesn't work
            //fill out opt with default values
        }
    }
}

如何检查是否通过opt传递了某些内容?

1 个答案:

答案 0 :(得分:1)

而不是

struct constructable {
    constructable(float2 opt = float2()) {
        if (opt == float2()) { //doesn't work
            //fill out opt with default values
        }
    }
};

如果在编译时已知所需的默认值,那么只需执行

struct constructable {
    constructable(float2 opt = {2.72, 3.14} ) {
    }
};

否则使用两个构造函数:

struct constructable {
    constructable() {
        // Use whatever computed values
    }
    constructable(float2 o) {
        // Use o
    }
};