2010-05-19 37 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; 
相關問題