繁体   English   中英

在const成员函数中返回C ++引用

[英]Returning a C++ reference in a const member functions

A有一个类层次结构,看起来像这样:

class AbstractDataType { 
public: 
   virtual int getInfo() = 0;
}; 

class DataType: public AbstractDataType { 
public:
   virtual int getInfo() { }; 
};

class Accessor { 
    DataType data; 
public: 
    const AbstractDataType& getData() const { 
        return(data); 
    } 
};

嗯,GCC 4.4报告:

在成员函数'const AbstractDataType&Accessor :: getData()const':error:从'const DataType'类型的表达式初始化'const AbstractDataType&'类型的引用无效

我哪里错了 - 这是我必须使用指针的情况吗?

[编辑 - 固定分号]

不,你不需要使用指针。 在这种情况下,您可以使用引用或指针。

您粘贴的代码应该可以工作,并且可以在g ++ 4.4和Visual Studio 2010中工作....除了在类声明之后丢失的分号。

我猜你的代码可能与你正在编译的代码不完全匹配。

特别是你不小心在代码中这样做了吗?

class DataType /*: public AbstractDataType*/ { 
public:
   virtual int getInfo() { }; 
};

我没有要测试的GCC副本,但问题可能是围绕数据的括号。 编译器可能会将其解释为DataType类型的表达式,然后您无法将其分配给引用。 尝试:

return data;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM