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

How to check if optional class argument is supplied or not?

本文关键字:参数 何检查 检查 是否      更新时间:2023-10-16

假设我有这个结构

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?

而不是

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
    }
};