2011-03-26 61 views
2

當試圖聲明一個抽象類時,我似乎無法使用模板化函數。這是爲什麼,我該如何處理?這是我的示例頭文件。從同一行虛擬數據聲明不允許

// Foo.h 
#include "Bar.h" 
#include "Baz.h" 
class Foo 
{ 
public: 
    Foo(); 
    virtual Bar<Baz> *getBaz() const = 0; 
     //snip 
}; 

其它編譯器錯誤包括

syntax error: missing ';' before '<'

+2

成員函數模板不能聲明爲虛擬。也就是說,你的類沒有成員函數模板。假設'Bar'是一個類模板,'Baz'是一個類型,這個代碼沒有任何問題。 – 2011-03-26 19:58:14

+1

「Bar.h」和「Baz.h」中的內容?你有通告嗎? – GManNickG 2011-03-26 19:58:16

+0

所以如果我想要所有的繼承類來實現這個成員函數,我該如何去做呢?它需要被聲明爲虛擬的,不是? – vapo 2011-03-26 20:09:33

回答

6

我看起來不承認酒吧作爲一種類型。

檢查你的兩個頭文件,並確保:

1),它定義
2)包括警衛是正確的,它沒有隱藏。

+0

有一個循環依賴。我是一個完全的傻瓜。謝謝大家。 – vapo 2011-03-26 20:32:38