指向const的成员指针

时间:2019-09-14 16:52:55

标签: c++ c++11

我正在尝试使用交换惯用法来实现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的指针       (以便能够使用交换)

1 个答案:

答案 0 :(得分:0)

在声明指针时,const声明相对于数据类型发生的顺序很重要。 const double *_thresholdPtr;创建一个可以指向的双精度型,但其本身不能更改。 double *const _thresholdPtr;创建一个指向现有double的常量指针。

我不确定是否会有所帮助,但是我在一些代码中遇到了类似的问题。 This post helped me understand the difference.

编辑:正如下面的评论,区别在于指针的声明位置。

相关问题