Class 向量表达式必须具有类类型

Class 向量表达式必须具有类类型,class,function,vector,stack,members,Class,Function,Vector,Stack,Members,我有一个类似于基本堆栈的类。在我的成员函数定义中,我在vec的每个实例上都会得到一个错误。错误告诉我表达式必须具有类类型。我必须做些什么来解决这个问题 class Stack{ public: Stack(); Stack & push(double & t); double pop() const; unsigned long long getElements(); private:

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

}
类堆栈{
公众:
堆栈();
堆叠和推送(双&t);
双pop()常数;
无符号长getElements();
私人:
向量向量向量[10];
静态双重回答;
};
Stack::Stack(){
答案=0;
}
堆栈和堆栈::推送(双(&t){
向量推回(t);
归还*这个;
}
双堆栈::pop()常量{
返回向量pop_back();
}
无符号长堆栈::getElements(){
返回向量大小();
}

这里有许多问题,在解决这些问题后,我得到了:

#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();

}
#包括
使用名称空间std;
类堆栈{
公众:
堆栈();
堆叠和推送(双&t);
双pop();
无符号长getElements();
私人:
向量向量机;
静态双重回答;
};
Stack::Stack(){
答案=0;
}
堆栈和堆栈::推送(双(&t){
向量推回(t);
归还*这个;
}
双栈::pop(){
双ret=vec.back();
vec.pop_back();
返回ret;
}
无符号长堆栈::getElements(){
返回向量大小();
}
我所做的改变是:

  • 缺少std的向量和命名空间默认值的include
  • pop_back返回void-需要首先获取要返回的元素
  • 不应将pop声明为常量,因为它确实更改了向量(您可以让返回值为常量)
  • 已删除vec声明中的[10]。它不是一个C数组
    thx我做了编辑,但这仍然不能解决问题:/有什么想法吗?我在“g++-cx.cpp”上没有得到任何错误。你能发布一条错误消息吗?我还忘了提到我删除了声明上的[10]——这不是如何声明尺寸。