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