C++ 在模板函数的参数列表中,size_t和unsigned int不匹配

C++ 在模板函数的参数列表中,size_t和unsigned int不匹配,c++,templates,C++,Templates,我想使用堆栈来存储数组的索引,因此我使用以下typedef,其中istack是堆栈的模板类: typedef istack<size_t> IndexStack; 但是当我调用下面的函数时,其中A.size返回一个size\u t stack.push_back(A.size()); GCC给出了以下错误 sort.cpp:在函数“void quicksort2Array&”中: sort.cpp:50:27:错误:调用“istack::push\u backsize\t”时没有

我想使用堆栈来存储数组的索引,因此我使用以下typedef,其中istack是堆栈的模板类:

typedef istack<size_t> IndexStack;
但是当我调用下面的函数时,其中A.size返回一个size\u t

stack.push_back(A.size());
GCC给出了以下错误

sort.cpp:在函数“void quicksort2Array&”中: sort.cpp:50:27:错误:调用“istack::push\u backsize\t”时没有匹配函数 iarray.h:103:8:注意:候选项是:void istack::push_backT&[with T=unsigned int]

我怎样才能让它工作

#include <cstddef>
template <class T>
struct istack
{
    void push_back(T& value);
    std::size_t size() const;
};

int main()
{
    typedef istack<size_t> IndexStack;
    IndexStack    a, stack;
    stack.push_back(a.size());
}
此代码产生一个错误

In function 'int main()':
13 no matching function for call to 'istack<unsigned int>::push_back(size_t)'
note 5 candidates are: void istack<T>::push_back(T&) [with T = unsigned int]
请注意,它列出了候选人。我怀疑您没有阅读/发布整个错误消息

给定的候选项与调用不匹配,因为引用是非常量的。临时引用(如A.size的结果)不能绑定到非常量引用

push_back应具有常量T值(&U)

此代码产生一个错误

In function 'int main()':
13 no matching function for call to 'istack<unsigned int>::push_back(size_t)'
note 5 candidates are: void istack<T>::push_back(T&) [with T = unsigned int]
请注意,它列出了候选人。我怀疑您没有阅读/发布整个错误消息

给定的候选项与调用不匹配,因为引用是非常量的。临时引用(如A.size的结果)不能绑定到非常量引用


push_-back应采用常量T和值

push_-back采用哪种类型作为参数?push_-back是否可能采用非常量引用?我认为问题在于,在这种情况下,你不能通过临时考试。不要试图用英语解释你的代码,因为它不是一种精确的语言。只要把准确的代码放到问题中,我们都能很好地阅读代码。保留你的英语解释,说明你想做什么。你的push_-back以什么类型作为参数?push_-back是否可能采用非常量引用?我认为问题在于,在这种情况下,你不能通过临时考试。不要试图用英语解释你的代码,因为它不是一种精确的语言。只要把准确的代码放到问题中,我们都能很好地阅读代码。保留您的英语解释,说明您要做的事情。这就是问题所在。push_back不接受常量引用。顺便说一下,我忘记粘贴错误消息的第三行。非常感谢您的回答。这就是问题所在。push_back不接受常量引用。顺便说一句,我忘记粘贴错误消息的第三行。非常感谢谢谢你的回答。