我有一个看起来像这样的旧函数:
int Random() const
{
return var_ ? 4 : 0;
}
我需要在该遗留代码中调用一个函数,使其现在看起来像这样:
int Random() const
{
return var_ ? newCall(4) : 0;
}
问题是我收到了这个错误:
In member function 'virtual int Random() const':
class.cc:145: error: passing 'const int' as 'this' argument of 'int newCall(int)' discards qualifiers
现在我知道为了修复这个错误,我可以让我的 newCall()
成为一个 const 函数。但是后来我必须在 newCall()
中进行几个函数调用,所以现在我必须将所有这些函数调用都设为 const。依此类推,直到最终我觉得我的程序的一半将是 const。
我的问题:有没有办法在 Random() 中调用不是 const 的函数?或者是否有人对如何在 Random()
中实现 newCall()
而不使我的程序一半成为常量有任何想法。
谢谢
-乔什
最佳答案
int Random() const
{
return var_ ? const_cast<ClassType*>(this)->newCall(4) : 0;
}
但这不是一个好主意。尽可能避免!
关于c++ - 如何在 const 函数中调用非常量函数 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5008541/