C++实现了一个从抽象模板派生的模板
C++ implementing a template that derives from an abstract template
SortedList.h是一个抽象模板,LinkedSortedList.sh派生了SortedList.h.并且是一个模板,而LinkedSortdList.cpp是一个实现LinkedSortDList.h中函数的模板,这正是我遇到问题的地方。
新的新错误:我认为我现在的问题是我没有正确地覆盖SortedList.h中的方法。
SortedList.h中的方法:
virtual void clear() = 0;
LinkedSortedList.h中的方法:
template <typename Elm> void SortedList<Elm>::clear() override;
错误:
错误C3240:"clear":必须是"SortedList"的非重载抽象成员函数
我尝试过:
void SortedList<Elm>::clear(){}
但我还是犯了同样的错误。我试图找到解决办法,但失败了。
您需要告诉编译器您正在定义模板的成员:
template <typename Elm>
LinkedSortedList<Elm>::LinkedSortedList() {
编辑:这更像是多个问题,但不同的错误消息:
c:\users\deltac\documents\visual studio 2010\projects\linked list\linked sortedlist.h(23):错误C2365:"linkedsortedlist::size":重新定义;以前的定义是"成员函数">
来自代码:
int size() const;
int size; // Compiler report here?
不能使用相同的标识符来引用成员变量和成员函数。您可以为不同的成员函数重用相同的标识符(函数可以重载)。将成员重命名为其他名称:例如int m_size;
。
错误2不是错误,但日志中上一条错误消息的延续(以开头的行请参阅)并不表示新错误。
c:\users\deltac\documents\visual studio 2010\projects\linked list\linked list\main.cpp(27):错误C2259:"LinkedSortedList":无法实例化抽象类
基中至少有一个纯虚拟函数(完整的错误消息可能包括它们的列表)尚未被覆盖。这使得派生类型成为抽象类型,并且无法实例化它。请提供适当的定义。
- 如何定义一个纯抽象基类
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- 两个抽象类,派生自同一个基类.如何访问从一个抽象类到另一个抽象类的指针
- 如何使用其中一个具体类实例化抽象类?
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- 有没有一种方法可以使用SFINAE来检测一个类型是否实现了给定的抽象基类
- 如何将抽象类的可访问性限制为另一个抽象类及其子类?
- 错误 - 变量类型 "X" 是一个抽象类 - c++
- 如何构建一个 Map,其中键是抽象基类(而不是值)
- 我在代码中有一个错误,错误是:(智能感知:不允许抽象类类型"HourlyWorker"的对象:)
- GMock - 用另一个实现模拟抽象类
- CRTP - 是否可以创建一个抽象基类?
- 创建一个抽象类类型的集合,shared_ptr的抽象类向量
- 为什么装饰器模式实现需要一个具有核心类的公共抽象超类
- 在另一个项目中包括继承的类时,抽象类的链接器错误
- "Has a" C++关系,最佳做法是让一个类"implement"多个抽象基类?
- 做抽象类总是拥有一个vtable
- 从抽象基类访问另一个基类成员