2011-03-26 3 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'が型であると仮定すると、このコードには何も問題はありません。 –

+1

"Bar.h"と "Baz.h"には何がありますか?円形のインクルードがありますか? – GManNickG

+0

したがって、すべての継承クラスにこのメンバ関数を実装したい場合、どうすればよいですか?バーチャルな宣言が必要でしょうか? – vapo

答えて

6

が含まれています。

はあなたの2つのヘッダファイルをチェックし、確認してください:それは
2に定義されていることを

1))ザ・は警備員が正しいか、それが隠されていない含まれています。

+0

循環依存がありました。私は完全なばかだ。みんなありがとう。 – vapo

関連する問題