[英]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.