一個抽象類,我有一個抽象類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;
};
我想做什麼正在建設的abs_class
類型的Icollection
對象,換句話說,我想這樣做:
ICollection<abs_class> *eles = new ArdalanCollection <abs_class>();
,但我有理由得到這個錯誤:
error C2259: 'abs_class' : cannot instantiate abstract class
有什麼辦法扭轉這個錯誤?
是啊其實我已經做了你的第二個補救措施,但不知何故,我需要使用你的第一個!感謝您的解釋。 – Alexander1991 2014-11-22 08:36:04