gpt4 book ai didi

c++ - 无法在类中使用带有数组作为参数的函数模板

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:32 24 4
gpt4 key购买 nike

我创建了一个函数模板。如果我在函数中使用它,它工作正常。现在,我想在类中使用它,但无法编译代码:

#include <QList>

// Function template
template <typename T>
void Array2QList(QList<T> &outList, const T in[], int &insize)
{
for (int i = 0; i < insize; ++i)
outList.append(in[i]);
}

// Class using the template
class Parser
{
public:
Parser(const unsigned char buffer[], const int numBytes){
Array2QList<>(frame, buffer, numBytes); // This one fails
}
~Parser(){}
QList<unsigned char> frame;
};

// Main
int main(int argc, char *argv[])
{
int size = 50;
unsigned char buffer[size];

QList<unsigned char> frame;

Array2QList<unsigned char>(frame, buffer, size); // This one works

Parser parser = Parser(buffer, size);
return 0;
}

我得到的错误是:

..\SandBox\main.cpp: In constructor 'Parser::Parser(const unsignedchar*, int)':

..\SandBox\main.cpp:20: error: no matching function forcall to 'Array2QList(QList&, const unsigned char*&, const int&)'

注意:我必须使用数组,因为它是 USB 驱动程序的接口(interface)。

最佳答案

Array2QList<>(frame, buffer, numBytes);

这里,numBytes 是一个const int,但是Array2QList 接受一个int&。您不能将非 const 引用绑定(bind)到 const 的内容。目前还不清楚为什么要通过引用获取该参数,所以如果您只是按值传递,它就会起作用。

template <typename T>
void Array2QList(QList<T> &outList, const T in[], int insize){
// get rid of & ^

关于c++ - 无法在类中使用带有数组作为参数的函数模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com