无法通过引用 C++ 传递值
Posted
技术标签:
【中文标题】无法通过引用 C++ 传递值【英文标题】:Can't pass value by reference C++ 【发布时间】:2013-09-29 22:17:05 【问题描述】:我正在构建一个基于我的 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;
然后将修改后的值存储在堆栈中。
【问题讨论】:
【参考方案1】:这是因为您在向量 back
和 front
方法中传回了对象的副本,而不是引用。
void shrinkToSize();
int currentCapacity() const;
T back(); // < Copy returned from this method, should be T&
T front(); // < Same here!
将上面几行中的T
更改为T&
,你应该很高兴。
【讨论】:
以上是关于无法通过引用 C++ 传递值的主要内容,如果未能解决你的问题,请参考以下文章