如何解决这个问题,就是在我的code'LList'
中分配一个抽象类类型的对象class Graphl : public Graph {
private:
List<Edge>** vertex;
int numVertex, numEdge;
int *mark;
public:
Graphl(int numVert)
{
Init(numVert);
}
void Init(int n) {
int i;
numVertex = n;
numEdge = 0;
mark = new int[n];
for (i = 0; i<numVertex; i++) mark[i] = 0;
vertex = (List<Edge>**) new List<Edge>*[numVertex];
for (i = 0; i<numVertex; i++)
{
这里有问题,它说分配抽象类类型'LList'的对象
vertex[i] = new LList<Edge>();
}
答案 0 :(得分:1)
您不会分配抽象类的对象,因为无法创建此类对象。 (这就是为什么它们是抽象的。)
此外,这看起来很奇怪:
List<Edge>** vertex;
为什么指向指向边列表的指针?我想你真正打算写的是
List<List<Edge *>> vertex;
这是一个指向Edges的指针列表。即使Edge
是抽象类型,也没关系。通常,我们通过指针或引用来引用抽象类型。
我在不知道你List
实际上是什么的情况下这样说。我假设它的语义类似于std::list
。