在课堂内使用时未找到模板化功能

时间:2015-05-12 13:34:48

标签: c++ templates

我正在尝试使用模板,但我有一个我不理解的编译错误。

代码:

#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&传输。

有人能告诉我我做错了吗?

谢谢!

0 个答案:

没有答案