我有一个初始化类的对象的问题,因为它认为该类是虚拟的[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我试图在序列的帮助下实现Set容器,它是基于数组构建的。我知道它存在于c ++系统库中,这是任务。我有一个ASet abstartc类的层次结构和一个Set as it的实现。麻烦本身出现在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;
}
c++ abstract
1个回答
0
投票

更改

virtual ~ASet() = 0;

virtual ~ASet() = default;
© www.soinside.com 2019 - 2024. All rights reserved.