- 主题:如何设计一个类,能够判断成员变量是否已经外部赋值?
在开发一些计算软件中,总是遇到这类问题。例如有一种单元,里面有若干个参数,给定不同的参数,后台计算公式也会不一样,因此需要判断哪些参数被赋值了,哪些没有。想实现这个功能,考虑过几种方案:
1.成员变量为double型的,初始赋值为NaN,若为int型的,初始赋值为最大整数。后面检查是否数据为NaN来判断有否外部赋值
2.所有数据型成员变量额外配一个bool型的成员变量,用于记录是否已经赋值
3.所有的成员变量都设计为string类型,通过检查字符串是否为空判断有否外部赋值
这些方案感觉都不完美,是否有更好的,期盼有经验的朋友分享一下想法,谢谢大家
- 来自 水木社区APP v3.5.7
--
FROM 222.129.132.*
我去,这也不让发
【 在 hdftiger 的大作中提到: 】
: 在开发一些计算软件中,总是遇到这类问题。例如有一种单元,里面有若干个参数,给定不同的参数,后台计算公式也会不一样,因此需要判断哪些参数被赋值了,哪些没有。想实现这个功能,考虑过几种方案:
: 1.成员变量为double型的,初始赋值为NaN,若为int型的,初始赋值为最大整数。后面检查是否数据为NaN来判断有否外部赋值
: 2.所有数据型成员变量额外配一个bool型的成员变量,用于记录是否已经赋值
: ...................
--
FROM 114.241.227.*
std optional 不就可以了
【 在 hdftiger 的大作中提到: 】
: 在开发一些计算软件中,总是遇到这类问题。例如有一种单元,里面有若干个参数,给定不同的参数,后台计算公式也会不一样,因此需要判断哪些参数被赋值了,哪些没有。想实现这个功能,考虑过几种方案:
: 1.成员变量为double型的,初始赋值为NaN,若为int型的,初始赋值为最大整数。后面检查是否数据为NaN来判断有否外部赋值
: 2.所有数据型成员变量额外配一个bool型的成员变量,用于记录是否已经赋值
: ...................
--
FROM 107.77.208.*
double初值nan
int初值 INT_MIN (-2147483648)
这是最常见的方案。
除非这两初值可能是合理参数值,否则不用考虑其它方法。
【 在 hdftiger 的大作中提到: 】
: 在开发一些计算软件中,总是遇到这类问题。例如有一种单元,里面有若干个参数,给定不同的参数,后台计算公式也会不一样,因此需要判断哪些参数被赋值了,哪些没有。想实现这个功能,考虑过几种方案:
: 1.成员变量为double型的,初始赋值为NaN,若为int型的,初始赋值为最大整数。后面检查是否数据为NaN来判断有否外部赋值
: 2.所有数据型成员变量额外配一个bool型的成员变量,用于记录是否已经赋值
: ...................
--
FROM 58.33.81.*
全部用指针。别搞太复杂。
【 在 hdftiger 的大作中提到: 】
: 在开发一些计算软件中,总是遇到这类问题。例如有一种单元,里面有若干个参数,给定不同的参数,后台计算公式也会不一样,因此需要判断哪些参数被赋值了,哪些没有。想实现这个功能,考虑过几种方案:
: 1.成员变量为double型的,初始赋值为NaN,若为int型的,初始赋值为最大整数。后面检查是否数据为NaN来判断有否外部赋值
: 2.所有数据型成员变量额外配一个bool型的成员变量,用于记录是否已经赋值
: ...................
--
FROM 61.185.186.*
所有的成员private,
在setvalue函数里边记录是否被赋值。
【 在 hdftiger 的大作中提到: 】
: 在开发一些计算软件中,总是遇到这类问题。例如有一种单元,里面有若干个参数,给定不同的参数,后台计算公式也会不一样,因此需要判断哪些参数被赋值了,哪些没有。想实现这个功能,考虑过几种方案:
: 1.成员变量为double型的,初始赋值为NaN,若为int型的,初始赋值为最大整数。后面检查是否数据为NaN来判断有否外部赋值
: 2.所有数据型成员变量额外配一个bool型的成员变量,用于记录是否已经赋值
: ...................
--
FROM 118.247.115.*
如果就这么一个类,1或2都行,没几行代码
如果大量这种需求,搞个模板property类
【 在 hdftiger 的大作中提到: 】
: 在开发一些计算软件中,总是遇到这类问题。例如有一种单元,里面有若干个参数,给定不同的参数,后台计算公式也会不一样,因此需要判断哪些参数被赋值了,哪些没有。想实现这个功能,考虑过几种方案:
: 1.成员变量为double型的,初始赋值为NaN,若为int型的,初始赋值为最大整数。后面检查是否数据为NaN来判断有否外部赋值
: 2.所有数据型成员变量额外配一个bool型的成员变量,用于记录是否已经赋值
: ...................
--
FROM 124.126.3.*
看了optional的说明,std打包了一个bool数据,用于记录是否初始化,感觉应该会是不错的解决方案,我打算试下,谢谢你的建议
- 来自 水木社区APP v3.5.7
【 在 mvtec 的大作中提到: 】
: std optional 不就可以了
--
FROM 222.129.132.*
这种东西,至少有个枚举变量来区分不同的类型啊。。。
根据类型来判断适用哪些参数就完了
【 在 hdftiger 的大作中提到: 】
: 在开发一些计算软件中,总是遇到这类问题。例如有一种单元,里面有若干个参数,给定不同的参数,后台计算公式也会不一样,因此需要判断哪些参数被赋值了,哪些没有。想实现这个功能,考虑过几种方案:
: 1.成员变量为double型的,初始赋值为NaN,若为int型的,初始赋值为最大整数。后面检查是否数据为NaN来判断有否外部赋值
: 2.所有数据型成员变量额外配一个bool型的成员变量,用于记录是否已经赋值
: ...................
--
FROM 111.199.191.*
好像有不同的实现方式
【 在 hdftiger 的大作中提到: 】
: 看了optional的说明,std打包了一个bool数据,用于记录是否初始化,感觉应该会是不错的解决方案,我打算试下,谢谢你的建议
: - 来自 水木社区APP v3.5.7
--
FROM 107.77.208.*