我正在使用数组重新创建向量类,并且在将值传递给我创建的对象时遇到一个小错误,以测试函数是否正常工作
这是代码
template<typename T>
class stack
{
public:
void pop()
{
S1.pop_back();
}
void push(T &e)
{
S1.push_back(e);
}
T& top()
{
counter = S1.Counter();
cout << counter;
return S1[counter];
}
bool empty()
{
if (S1.Counter() == 0)
{
return true;
}
else
{
return false;
}
}
private:
sean<T> S1;
int counter;
};
对象调用
int main(int argc, char *argv[])
{
stack<int> S1;
S1.push(1);
return 0;
}
在main函数中,我只是创建一个“堆栈”对象S1并想调用push(T&amp; e)函数,但是我收到了错误
Initial value of reference to non-const must be an Ivalue
这可能很简单,但任何帮助都会受到赞赏。谢谢。
答案 0 :(得分:1)
您尝试传递临时但正常的引用只能绑定变量。 这将解决问题:
void push(T const& e)
{
S1.push_back(e);
}