一个抽象类,我有一个抽象类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