我正在尝试借助基于数组的序列实现Set容器。我知道它存在于c ++系统库中,这是任务。我有一个层次结构ASet abstartc类和一个Set作为其实现。麻烦本身出现在main()中,因为它说Set类是抽象的。
template<class Elem>
class Array {
public:
explicit Array(size_t n);
~Array();
//some functions
private:
size_t _size;
Elem* _allocator;
};
#include "Array.h"
template <class Elem>
class Sequence {
public:
Sequence(const size_t capacity = _default) : _size(0), _allocator(new Array<Elem>(_size)) {
return;
};
~Sequence() {
delete _allocator; return;
}
//some functions
private:
size_t _size;
static const size_t _default = 0;
Array<Elem> * _allocator;
};
template <class Elem>
class ASet {
public:
virtual ~ASet() = 0;
};
#include "Sequence.h"
template <class Elem>
class Set : public ASet<Elem> {
private:
Sequence<Elem> *seq;
public:
Set(const size_t size = 1) : seq(new Sequence<Elem> (size)) {}
~Set() {
delete seq;
}
//some functions
};
不要介意类中的任何函数,没有它们,问题本身就在于在main()中创建对象:
#include "Set.h"
#include "ASet.h"
int main() {
Set<int> s;
return 0;
}
答案 0 :(得分:0)
更改
virtual ~ASet() = 0;
到
virtual ~ASet() = default;