在我的代码中分配抽象类类型的对象

时间:2014-12-23 11:04:16

标签: c++

如何解决这个问题,就是在我的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>();
        }

1 个答案:

答案 0 :(得分:1)

您不会分配抽象类的对象,因为无法创建此类对象。 (这就是为什么它们是抽象的。)

此外,这看起来很奇怪:

List<Edge>** vertex;

为什么指向指向边列表的指针?我想你真正打算写的是

List<List<Edge *>> vertex;

这是一个指向Edges的指针列表。即使Edge是抽象类型,也没关系。通常,我们通过指针或引用来引用抽象类型。

我在不知道你List实际上是什么的情况下这样说。我假设它的语义类似于std::list