我正在构建一个基于我的 Vector 类的堆栈和队列类。每一个,我都需要调用一个函数来修改该索引处的值。
对于堆栈,该函数是:
T &top()
但是,我似乎无法修改这个值,这就是我的最终目标。目前,我已经从堆栈函数中删除了与号,因此可以显示该值,但不能修改。
当我在堆栈或队列中包含与号时,错误是相同的。所以我认为问题是一样的,我相信它与语法有关
例如:
error C2440: 'return' : cannot convert from 'float' to 'float &'
这是我的 Stack.h
template <class T>
class Stack{
private:
Vector<T> stack;
public:
void push(const T &x) {stack.push_back(x);}
void pop(){stack.pop_back();}
bool empty(){return stack.empty();}
int currentCapacity() const {return stack.currentCapacity();}
int size(){return stack.size();}
T &top() {return stack.back();}
};
这是我的 Vector 头文件,以及我在 Stack 中调用的函数:
#include<iostream>
using namespace std;
const int SIZEFACTOR = 4;
template <class T>
class Vector{
private:
unsigned int size_Of_Vector; // # of Items in list
unsigned int total_Vector_Capacity;//Total Capacity
T * vector_array;//Items themselves
public:
Vector();
~Vector();
void push_back(const T &e);
void pop_back();
void pop_front();
bool empty();
int size() const;
void growVector();
void shrinkVector();
void shrinkToSize();
int currentCapacity() const;
T back();
T front();
//Operator
const T & operator [] (int index){
if((index >= size_Of_Vector) || index < 0){
cout << "ERROR! Index not used: " << index
<< " (max = " << size_Of_Vector << ")" << endl;
return EXIT_FAILURE;
}
return vector_array[index];
};//End Operator
};//End Header Definition
template <class T>
T Vector<T>::back(){
if(size_Of_Vector == 0){
cout << "Vector is EMPTY" << endl;
return 0;
}
return vector_array[size_Of_Vector-1];//returns top
}
任何人都可以帮助我指出正确的方向吗?我试图达到的最终目标是能够调用类似的东西:(假设模板是 int)
x.top() += 5;
然后将修改后的值存储在堆栈中。