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

时间:2016-03-22 08:58:52

标签: c++ arrays qt qtquick2

功能声明:

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

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

我知道一种方法是为QVector指定默认参数,但我不知道如何使用&#34; QVector&#34;或者&#34; QList&#34;。

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

2 个答案:

答案 0 :(得分:3)

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

<input type="checkbox"  (ngModelChange)="myModel=$event" [ngModel]="mymodel">

供参考,这里是doc link to QVector default constructor

上面假设,你不需要“没有给定矢量”和“给出空矢量”来表示不同的东西。如果你确实需要它们来表示不同的东西,那么你需要提供单独的重载:

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

第三种Qt方式是将第三个参数传递为QVariant。那么你可以让null QVariant表示没有参数,而Q_INVOKABLE void formPackets (unsigned char argPacketDescriptor, unsigned char argNoOfBytes, QVector<unsigned char> argBody); Q_INVOKABLE void formPackets (unsigned char argPacketDescriptor, unsigned char argNoOfBytes); ,无论是否为空,意味着该参数存在。功能声明:

QVector

答案 1 :(得分:2)

您有两种选择:

  1. 进行两次单独的重载。
  2. 指定默认参数。
  3. 在大多数情况下,我更喜欢第一种 - 它不太可能导致麻烦。