函数声明:

Q_INVOKABLE void formPackets (unsigned char          argPacketDescriptor,
                              unsigned char          argNoOfBytes,
                              QVector<unsigned char> argBody);

第三个参数QVector应该是可选的。

我知道一种方法是为QVector指定默认参数,但是我不知道如何使用“QVector”或“QList”来实现。

如何在C++中将QVector作为可选参数传递给函数?

最佳答案

要使用默认参数,当缺少参数时,您需要提供要使用的默认值。所以简单地这应该工作:

Q_INVOKABLE void formPackets (unsigned char          argPacketDescriptor,
                              unsigned char          argNoOfBytes,
                              QVector<unsigned char> argBody = QVector<unsigned char>());

供引用,这里是doc link to QVector default constructor

以上假设,您不需要“没有给定 vector ”和“给定空 vector ”来表示不同的事物。如果确实需要它们表示不同的含义,则需要提供单独的重载:
Q_INVOKABLE void formPackets (unsigned char          argPacketDescriptor,
                              unsigned char          argNoOfBytes,
                              QVector<unsigned char> argBody);

Q_INVOKABLE void formPackets (unsigned char          argPacketDescriptor,
                              unsigned char          argNoOfBytes);

第三种Qt方法是将第三个参数传递为 QVariant 。然后,您可以让null QVariant 表示无自变量,而QVector表示空或无,表示该自变量存在。函数声明:
Q_INVOKABLE void formPackets (unsigned char  argPacketDescriptor,
                              unsigned char  argNoOfBytes,
                              QVariant       argBody);

09-30 15:53
查看更多