gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:32 27 4
gpt4 key购买 nike

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

我已经实现了 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com