如何将 QVector 作为可选参数传递给 C++ 中的函数?
How to pass a QVector as an optional argument to a function in c++?
函数声明:
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。
以上假设,您不需要 "no vector given" 和 "empty vector given" 来表示不同的东西。如果您确实需要它们表示不同的意思,那么您需要提供单独的重载:
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
. Then you could have null QVariant
表示没有参数,而 QVector
,无论是否为空,都表示存在参数。函数声明:
Q_INVOKABLE void formPackets (unsigned char argPacketDescriptor,
unsigned char argNoOfBytes,
QVariant argBody);
函数声明:
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。
以上假设,您不需要 "no vector given" 和 "empty vector given" 来表示不同的东西。如果您确实需要它们表示不同的意思,那么您需要提供单独的重载:
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
. Then you could have null QVariant
表示没有参数,而 QVector
,无论是否为空,都表示存在参数。函数声明:
Q_INVOKABLE void formPackets (unsigned char argPacketDescriptor,
unsigned char argNoOfBytes,
QVariant argBody);