2
抽象クラスを宣言しようとすると、私はテンプレート関数を持つことができないようです。これはなぜですか、どうすれば対処できますか?ここに私のヘッダーファイルの例を示します。同じラインからデータ宣言でバーチャルが許可されない
// Foo.h
#include "Bar.h"
#include "Baz.h"
class Foo
{
public:
Foo();
virtual Bar<Baz> *getBaz() const = 0;
//snip
};
他のコンパイラエラーは、タイプとしてバーを認識しないように私には見えます
syntax error: missing ';' before '<'
メンバー関数テンプレートを仮想宣言することはできません。つまり、クラスにメンバー関数テンプレートはありません。 'Bar'がクラステンプレートで、' Baz'が型であると仮定すると、このコードには何も問題はありません。 –
"Bar.h"と "Baz.h"には何がありますか?円形のインクルードがありますか? – GManNickG
したがって、すべての継承クラスにこのメンバ関数を実装したい場合、どうすればよいですか?バーチャルな宣言が必要でしょうか? – vapo