所以我试图创建一个由两个堆栈组成的类。我想为它创建一个构造函数,并且我希望堆栈中最初有0个元素:
class twoStacks {
std::stack<int> mins;
std::stack<int> values;
twoStacks():
{
}
};
当我编译这个时,我得到一个错误,"错误:预期的类成员或基类名称。"为什么我不能有一个空的构造函数?(我用的是clang-600.0.56)
我是否首先需要一个构造函数,因为我只想启动空堆栈?当我把元素推到堆栈上时,这会引起问题吗?
有没有关于如何构建这样一个类的指导方针?我的意思是,我应该使用指向堆栈的两个指针吗?如果我使用指针,我将使用new
关键字进行初始化。首选哪种方式?
例如,如果这个类有另一个成员变量/值int size
,我会将其列表初始化为0。但当它是一个容器时,我该怎么办?我假设如果有对流,无论它们是堆栈、向量还是任何其他容器都是一样的(如果我错了,请纠正我)。
如果您不希望编译器向您提供错误消息,则需要编写正确的代码。
删除twoStacks()
之后和{
之前的冒号。
或者添加有效的初始化程序以默认构造成员
twoStacks(): mins(), values()
{
}
或者(因为编译器会为您生成一个默认构造函数,在大多数情况下,您还没有声明另一个构造函数),只需完全删除构造函数的声明和定义。
您需要删除twoStacks()
之后的冒号。除非显式调用成员变量的构造函数,否则编译器将生成默认构造它们的代码。