我正在尝试使用模板,但我有一个我不理解的编译错误。
代码:
#include <QList>
template <typename T>
bool getBytesFromFrame(
QList<unsigned char>::ConstIterator *iterator,
T &val, const int numBytes,
QList<unsigned char>::ConstIterator &listEnd) // ERROR HERE
{
return true;
}
class Parser
{
public:
Parser(const unsigned char buffer[], const int numBytes){
}
~Parser(){}
template <class T>
bool next(T &data, const int numBytes)
{
return getBytesFromFrame(&it, data, numBytes, frame.constEnd());
}
QList<unsigned char> frame;
private:
QList<unsigned char>::ConstIterator it;
};
编译器抱怨:
.. \ SandBox / test.h:在成员函数'bool Parser :: next(T&amp;,int)中 [with T = int]':.. \ SandBox \ main.cpp:58:从这里实例化
.. \ SandBox / test.h:27:错误:没有匹配函数进行调用 'getBytesFromFrame(QList :: const_iterator *,int&amp;,const int&amp;,QList :: const_iterator)'
我不明白为什么在调用const int&
期间参数#3变为getBytesFromFrame
。
这是numBytes
const int
函数next
的参数,并作为参考const int&
传输。
有人能告诉我我做错了吗?
谢谢!