强制调用常量版本成员函数

Forcing a call to constant version member function

本文关键字:成员 函数 版本 常量 调用      更新时间:2023-10-16

我需要一种方法来强制调用成员函数的常量版本。我正在努力使它尽可能高效。有什么好的解决方案吗?

EDIT:寻找一个通用函数

引用const Type或指向const Type的指针。

你可以用一种奇特的方式做到这一点,但归根结底,这是唯一的方法。

虽然我真的不明白这样做的目的是什么。看起来不值得这么努力。

此外,我不太确定我是否理解你所说的泛型函数的意思。这需要一些澄清,但如果我理解正确的话,你想取一个指针/值/引用并将其传递给一个函数,让它神奇地调用一个const方法吗?只有在多态性或至少可以使用相同名称的方法(模板化)的情况下,这才会起作用。

它根据传递的参数自动调用常量或非常量版本。您只能将常量强制转换为非常量。这可能看起来很傻,但这就是世界的方式。

例如,你通常可以这样做:

void function(char foo);
void function(int foo);
function(4);

编译器将"为您决定"调用哪一个,您可以通过执行来明确它

int x;
function((int)x);
function((char)x);

然而,显式传递重载的const版本没有等效的方法。

当然,您可以简单地只定义一个const版本,并且参数将简单地作为const传递。