2010-05-19 74 views
3

A具有一个类层次结构看起来somethign像该参考getData()const': 错误:从'const DataType'类型的表达式的类型'const AbstractDataType &'的引用无效初始化返回一个C++中const成员函数

我在哪里出错 - 是thi在我使用指针的情况下,我是否需要MUST

[编辑 - 固定分号]

+0

我没有看到任何错误的代码,并且Comeau和Visual C++ 2010都接受它(通过微不足道的修改来编译它)。 – 2010-05-19 01:31:17

+0

用g ++编写的工程4.4.1 – sth 2010-05-19 01:32:20

+0

适用于g ++ 4.2.4(以你的类中的缺失分号为模) – Stephen 2010-05-19 01:34:23

回答

4

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

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

我猜你也许在这里的代码不完全匹配你正在编译的代码。

特别是你不小心在代码中做到这一点?

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

是的,我确实忘了继承AbstractDataType。 Jeez,这是一个新手错误。 : -/ – 2010-05-19 01:50:22

+0

@Chris:每个人都有可能遇到 – 2010-05-19 02:06:51

0

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

return data;