Я создаю класс стека и очереди, основанный на моем классе Vector. Каждый из них мне нужно вызвать функцию, которая позволит мне изменить значение в этом индексе.Не удается передать значение по ссылке C++
Для стека, что функция:
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();}
};
Вот мой файл Вектор заголовок , и функцию, которую я звоню в 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
}
Любой, кто может помочь мне указать направление в правильном направлении? Конечная цель я пытаюсь достичь, чтобы быть в состоянии назвать что-то вроде: (Если предположить, что шаблон является целое)
x.top() += 5;
А затем модифицированное значение, сохраненное в стеке.