1

我将 Qt 4.8.5 与 Windows 7.0 SDK 中的 MSVC 2010 编译器和调试器一起使用,并将 Qt creator 作为我的 IDE。

以下语法可以正常工作:

class Device
{
 public:
    Device();
    ....
    QVector<double> MyContainer;
    ....
 protected:
    ....
}

,其中 QContainer 可以是 QVector、QList...等,而 T 可以是任何类型。

但以下语法被 Qt 创建者拒绝,并在尝试编译时显示“错误 C2059”:

class Device
{
 public:
    Device();
    ....
    QVector<double> MyContainer(100);
    ....
 protected:
    ....
}

我很困惑,因为文档说语法“QContainer = MyContainer(szie)”是合法的,但我的 Qt 创建者只是无法阅读,它告诉我有一个“意外令牌'('”。

我在做wearg吗?

4

1 回答 1

3

这是因为您试图分配给typeQVector<double>是一种类型,而不是变量声明或您可以分配的任何其他内容。这意味着这两个例子实际上都是错误的。

我想你的意思是声明MyContainer你应该使用的成员变量

QVector<double> MyContainer;

要将容器初始化为特定大小,您必须使用构造函数初始化列表:

Device()
    : MyContainer(100)
{
    ...
}

有关初始化列表的更多信息,请参阅本教程本参考

于 2014-01-16T11:20:04.210 回答