0

我正在使用数组重新创建向量类,并且在将值传递给我创建的对象以测试函数是否正常工作时出现小错误

这是代码

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;
}

在主函数中,我只是创建一个“堆栈”对象 S1 并想调用 push(T&e) 函数,但出现错误

Initial value of reference to non-const must be an Ivalue

这可能很简单,但任何帮助将不胜感激。谢谢你。

4

1 回答 1

1

您正在尝试传递一个临时但普通的引用只能绑定变量。这将解决问题:

void push(T const& e)
{
        S1.push_back(e); 
}
于 2013-09-29T23:05:50.837 回答