这是我的问题。我创建了一个成员函数声明为 const
的类,该类使用我无法修改(在其他人的代码中声明)并且未声明为 const
的外部函数。更准确地说
别人的代码
class B {
public:
void foo();
};
我的代码
class A : public B {
public:
void bar() const {
this->foo();
}
};
我知道对于成员数据,我们可以通过使用 mutable
或 const_cast
来强制保持常量正确性。我如何“破解”foo
,以便我的编译器理解我想将它当作 const 使用,即使它没有在其他人的代码中声明?
最佳答案
不要那样做。
不要这样做:
例子:
class A : public B {
public:
void bar() const {
const_cast<B*>(static_cast<const B*>(this))->foo();
}
};
编辑: 有效的用例是如果:
- 函数
B::foo()
不修改状态,并且可以声明为const
,但是…… - 编写
B::foo()
的人忘记将其声明为 const,并且... - 你不能改变它,因为它会破坏你无法控制的东西。
理论上这不会发生,但实际上有时会发生。
正如其他回答者所说的那样,更好的答案是固定 B::foo()
,或者提供一个替代函数来做同样的事情是 声明为常量。
关于c++ - 强制外部函数为 const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10831802/