错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时为"常量"

Error C2059 : 'constant' when trying to create a Qt container in a header file with known size

本文关键字:Qt 创建 文件 常量 C2059 错误      更新时间:2023-10-16

我正在使用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创建者就是无法阅读,它告诉我有一个"意外的令牌'('"。

我做得很糟糕吗?

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

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

QVector<double> MyContainer;

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

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

有关初始值设定项列表的详细信息,请参阅本教程或参考。