У меня есть абстрактный класс Icollection
вроде этого:экземпляр абстрактного класса в C++
using namespace std;
template <typename T>
class ICollection
{
public:
virtual void add(T) = 0;
virtual T get(int) = 0;
virtual int count() = 0;
};
и производный класс ArdalanCollection
так:
#include "iCollection.h"
#include <map>
template <typename T>
class ArdalanCollection :public ICollection<T>
{
public:
ArdalanCollection(){
index = 0;
};
virtual void add(T obj){
encapsolateImplementation.insert(make_pair(index++, obj));
};
virtual T get(int index){
return encapsolateImplementation[index];
};
virtual int count(){
return index;
}
private:
int index;
map < int, T > encapsolateImplementation;
};
теперь я другой абстрактный класс с именем abs_class
, как это :
class abs_class
{
public:
abs_class(){};
virtual int getT(int) = 0;
protected:
int Kg;
};
что я хочу сделать строит объект Icollection
типа abs_class
, другими словами, я хочу сделать это:
ICollection<abs_class> *eles = new ArdalanCollection <abs_class>();
но я резонно получил эту ошибку:
error C2259: 'abs_class' : cannot instantiate abstract class
есть ли способ, чтобы включить эту ошибку?
Да, на самом деле я уже сделал ваше второе лекарство, но как-то мне нужно было использовать ваш первый! Спасибо за объяснение. – Alexander1991