如何将 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 作为可选参数传递给函数?

您有两个选择:

  1. 进行两个单独的重载。
  2. 指定默认参数。

在大多数情况下我更喜欢第一个 -- 它不太可能导致麻烦。

要使用默认参数,您需要提供默认值以在缺少参数时使用。所以简单地说这应该有效:

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);