我遇到了一些编译器问题,一个类变量和一个方法访问它的内存位置。我需要能够返回类变量的地址,我需要其他类能够读取该地址。
class A
public:
bool& getFlag();
private:
bool flag;
inline bool& A::getFlag()
{
return &flag;
}
我希望这就足够了,但我收到以下错误:
invalid initialization of non-const reference of type ‘bool&’ from an rvalue of type ‘bool*’
return &flag;
我不明白为什么它的阅读一个布尔 *,甚至作为一个右值,从我写的到目前为止。我对c++相当陌生,所以如果这是一个基本的问题,请理解。
到目前为止,我看到了两种可能的解决方案。第一,定义一个变量来保存get函数中的地址,并返回该变量,我认为这不会起作用,因为该变量是临时的,我特别需要返回bool&,而不是const bool&。另一个,定义另一个类变量来保存地址,并使用get函数返回这个新变量。我相信这是可行的,但感觉有点笨拙,我想知道是否有更好的方法,或者我在当前的实现中是否犯了一些错误,否则它会工作。
1条答案
按热度按时间xoefb8l81#
你遇到的错误是因为你试图在getFlag方法中返回一个指向bool(即
bool*
)的指针作为对bool
(即bool&
)的引用,这是不允许的。错误消息表明您正在尝试使用右值(临时)指针初始化非常量引用。如果你想返回一个对flag成员变量的引用,你应该这样做: