我正在尝试使用交换惯用法来实现5条规则。
但是,我的内部成员字段是const。
起初我尝试制作const_cast,但是我认为在这种情况下可能是不可能的。
我得出结论,最好的方法是将成员字段转换为ptr到const。
我尝试通过初始化列表执行此操作,但是找不到正确的语法。 以下内容无法编译:
HashMap<KEY, VALUE>::HashMap(double threshold)
: *_thresholdPtr(threshold)
...
const double * _thresholdPtr;
对于您的帮助,我将不胜感激,首先,如果指向const的ptrs在这种情况下是最好的方法, 以及如何操作(如果是)。
谢谢!
编辑:我知道const double *不同于double * const。 但是我想做的是接收一个双数,并且 将其作为const的double附加到不是const的指针 (以便能够使用交换)
答案 0 :(得分:0)
在声明指针时,const
声明相对于数据类型发生的顺序很重要。 const double *_thresholdPtr;
创建一个可以指向的双精度型,但其本身不能更改。 double *const _thresholdPtr;
创建一个指向现有double
的常量指针。
我不确定是否会有所帮助,但是我在一些代码中遇到了类似的问题。 This post helped me understand the difference.
编辑:正如下面的评论,区别在于指针的声明位置。