将值传递给模板化对象

时间:2013-09-29 23:02:30

标签: c++

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

这是代码

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

这可能很简单,但任何帮助都会受到赞赏。谢谢。

1 个答案:

答案 0 :(得分:1)

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

void push(T const& e)
{
        S1.push_back(e); 
}