0

我有一个类似于基本堆栈的类。在我的成员函数定义中,每个 vec 实例都会出错。该错误告诉我表达式必须具有类类型。我必须怎么做才能解决这个问题?

class Stack{
    public:
        Stack();
        Stack & push(double & t);
        double pop() const;
        unsigned long long getElements();
    private:
        vector <double> vec[10];
        static double answer;
};

Stack::Stack(){
    answer=0;
}

Stack & Stack::push(double & t){
    vec.push_back(t);
    return *this;
}

double Stack::pop()const{
    return vec.pop_back();
}

unsigned long long Stack::getElements(){
    return vec.size();

}
4

1 回答 1

2

这里有很多问题,在修复它们后,我得到了:

#include <vector>
using namespace std;
class Stack{
    public:
        Stack();
        Stack & push(double & t);
        double pop();
        unsigned long long getElements();
    private:
        vector <double> vec;
        static double answer;
};

Stack::Stack(){
    answer=0;
}

Stack & Stack::push(double & t){
    vec.push_back(t);
    return *this;
}

double Stack::pop(){
    double ret = vec.back();
    vec.pop_back();
    return ret;
}

unsigned long long Stack::getElements(){
    return vec.size();

}

我所做的更改是:

  1. 缺少包含标准的向量和命名空间默认值。
  2. pop_back 返回 void - 需要先让元素返回。
  3. 不应将 pop 声明为 const,因为它确实会更改向量(您可以将返回值设为 const)。
  4. 在 vec 声明中删除了 [10]。它不是 C 数组。
于 2012-10-11T05:49:40.700 回答