所以我正在尝试创建一个由两个堆栈组成的类。我想为它创建一个构造函数,我希望堆栈最初有 0 个元素:
class twoStacks {
std::stack<int> mins;
std::stack<int> values;
twoStacks():
{
}
};
当我编译它时,我得到一个错误,“错误:预期的类成员或基类名称。”为什么我不能有一个空的构造函数? (我使用的是 clang-600.0.56)
我是否首先需要一个构造函数,因为我只想启动空堆栈?当我将元素插入堆栈时,这会导致问题吗?
是否有关于如何构建这样的类的指南?我的意思是,我应该使用两个指向堆栈的指针吗?如果我使用指针,我会使用 new
关键字启动。首选哪种方式?
例如,如果这个类有另一个成员变量/值int size
,我会将它初始化为0。但是当它是一个容器时我该怎么办?我假设如果存在对流,那么无论它们是堆栈、 vector 还是任何其他容器都是一样的(如果我错了请纠正我)。
最佳答案
如果您不希望编译器用错误消息奖励您,则需要编写正确的代码。
删除 twoStacks()
之后和 {
之前的冒号。
或者添加有效的初始化器来默认构造成员
twoStacks(): mins(), values()
{
}
或者(因为编译器会为你生成一个默认构造函数,在大多数情况下你没有声明另一个构造函数),只需完全删除构造函数的声明和定义。
关于c++构造函数-如何在没有new的情况下进行初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33705397/