c++ - "Expected class-name"...析构函数实现中的问题

标签 c++ class linked-list stack destructor

我正在尝试实现堆栈和队列。我还获得了用于测试堆栈和队列的代码(以查看它们各自的功能是否正常工作)。

我已经实现了 stack 和 quete 的功能,但是在尝试编译它们时出现错误: 在析构函数“Stack::~Stack()”中 '(' 标记前的预期类名
在他们两个。

以下是通用的 Stack 类:

template <class T>
class Stack
{
    List<T> list;
 public:

    Stack();

    Stack(const Stack<T>& otherStack);

   ~Stack();
}

列表类:

template <class T>
class List
{
    ListItem<T> *head;

    public:

    List();

    List(const List<T>& otherList);

    ~List();
}

现在 List 类的析构函数工作正常。所以记住这一点,我对析构函数的实现是:

template <class T>
Stack<T>::~Stack()
{

                 list.~List();
}

我在这里做错了什么?

最佳答案

你应该(几乎)永远不要显式地调用析构函数。当您的 Stack 生命结束时,它会自动调用其成员的析构函数。你不需要做任何事情。 list 会自动销毁。

如果你有一个指针,p,作为成员指向一个动态分配的对象,那么你需要在析构函数中做一些清理工作,方法是 删除 p;。但在这里,你没有。 list 会自动销毁。

关于c++ - "Expected class-name"...析构函数实现中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14777533/

相关文章:

c++ - 是否可以在专门的模板类中访问非类型模板参数的值?

c++ - OpenCV calcHist 函数。

javascript - 访问和更改先前修改的元素之外的元素

c - 链接列表和结构

algorithm - 如何在两个链表中找到最新的相等元素?

c++ - 有条件地启用一个子类型(类似于enable_if来启用功能)

c++ - 在 C++ 中重新分配指针的正确方法

user-interface - 我需要一个Java反编译器

python - 在评估定义为类的列表的长度时

c++ - 从外部类访问链表私有(private)变量