矢量表达式必须具有类类型

时间:2012-10-11 05:30:21

标签: class function vector stack members

我有一个类似基本堆栈的类。在我的成员函数定义中,我在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();

}

1 个答案:

答案 0 :(得分: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. 缺少std的vector和namespace默认值。
  2. pop_back返回void - 需要先让元素返回。
  3. 不应该将pop声明为const,因为它会更改向量(您可以将返回的值设置为const)。
  4. 在vec声明中删除了[10]。它不是C数组。