【发布时间】:2018-05-24 00:26:54
【问题描述】:
我有一个类B,它有两种方法,一种返回指向成员变量的指针,另一种返回对变量的 const 引用。
我尝试调用这些方法。在调用期间,我将返回值存储到相应的返回类型中。
我期待适当的返回类型最终会调用适当的方法,但我收到一个编译错误:
错误:从“int*”到“int”的无效转换 [-fpermissive] const int& refval2 = b.Get(); `这是我的代码:
#include <iostream>
class B{
public:
int* Get(){
return &x_;
}
const int & Get() const{
return x_;
}
private:
int x_ = 0;
};
int main(){
B b;
const int& refval2 = b.Get();
int* pval2 = b.Get();
}
【问题讨论】:
-
选择要调用的重载函数时不使用返回类型。
-
有没有办法确保调用正确的函数?
-
根据 C++ 的规则,“正确”函数被调用,但返回类型错误。
-
我将一个重命名为
GetPtr(),而将另一个保留为Get。
标签: c++ c++11 overload-resolution