首页 > 解决方案 > c++ - const 成员 func,只能在左值实例上调用,使用 ref 限定符

问题描述

我试图通过引用限定符强制类的 const 'getter' 方法仅在类的左值实例上调用,并且由于某种原因得到意外结果(我正在使用clang 6.0.1编译C++ 17支持,通过c++1z标志,在Windows上):

该声明还允许在右值引用bool getVal() const &;上调用该方法。

该声明bool getVal() &; 不允许在右值引用上调用该方法,但是据我了解-该函数不再是 const 方法,这对于“getter”方法在设计上是有问题的。

获得方法的两个特征的正确方法是什么?

标签: c++visual-c++c++17ref-qualifier

解决方案


使用bool getVal() const &;,但为右值添加已删除的重载:

bool getVal() const && = delete;

推荐阅读