C++ 数据声明中不允许使用虚拟

C++ 数据声明中不允许使用虚拟,c++,templates,C++,Templates,当试图声明抽象类时,我似乎无法使用模板函数。为什么会这样,我该如何处理?下面是我的示例头文件 // Foo.h #include "Bar.h" #include "Baz.h" class Foo { public: Foo(); virtual Bar<Baz> *getBaz() const = 0; //snip }; //Foo.h #包括“Bar.h” #包括“Baz.h” 福班 { 公众: Foo(); 虚拟条*getBaz()常量=

当试图声明抽象类时,我似乎无法使用模板函数。为什么会这样,我该如何处理?下面是我的示例头文件

// Foo.h
#include "Bar.h"
#include "Baz.h"
class Foo
{
public:
    Foo();
    virtual Bar<Baz> *getBaz() const = 0;
         //snip
};
//Foo.h
#包括“Bar.h”
#包括“Baz.h”
福班
{
公众:
Foo();
虚拟条*getBaz()常量=0;
//剪断
};
同一行的其他编译器错误包括


语法错误:缺少“;”在“之前,我看起来它无法将Bar识别为一种类型

检查两个头文件并确保:

1) 它是被定义的

2) 包含保护正确且未隐藏。

成员函数模板不能声明为虚拟。也就是说,您的类没有成员函数模板。假设
Bar
是一个类模板,而
Baz
是一个类型,那么这个代码没有问题。“Bar.h”和“Baz.h”中是什么?有循环包含吗?如果我想让所有继承类实现这个成员函数,我该怎么做?它需要声明为虚拟的,不是吗?是的。我们要求的是更多的代码,以便我们能够解决您的问题,因为您发布的内容没有问题。我非常怀疑循环包含。@詹姆斯·麦克内利斯:成员函数没有模板化。它使用一个模板化的返回类型,但它是完全参数化的,因此一个完整的返回类型是实类型。我是个十足的傻瓜。谢谢大家。