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

Posted

技术标签:

【中文标题】错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时出现“常量”【英文标题】:Error C2059 : 'constant' when trying to create a Qt container in a header file with known size 【发布时间】:2014-01-16 10:44:52 【问题描述】:

我将 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 创建者无法阅读,它告诉我有一个“意外的令牌 '('”。

我在做磨损吗?

【问题讨论】:

什么是MyContainer?你真的在写吗? QVector&lt;SomeType&gt; = MyContainer;?您能否显示更多上下文(即周围的代码)?更具体地说,请向我们展示真实代码。 抱歉,我已经添加了更多信息。 【参考方案1】:

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

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

QVector<double> MyContainer;

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

Device()
    : MyContainer(100)

    ...

有关初始化列表的更多信息,请参阅例如this tutorial,或this reference。

【讨论】:

我很抱歉“=”只是我帖子上的一个错字,我已经更正了。此外,非常感谢您,这些链接给了我很多提示并澄清了我的问题。现在我知道如何解决这个错误了,谢谢!

以上是关于错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时出现“常量”的主要内容,如果未能解决你的问题,请参考以下文章

尝试在 pyqt 中创建文件浏览器,但 qtreewidgetitem 出现意外 bool 错误

致命错误:无法在 smartFoxServer 中创建日志文件

如何在 Arduino 类中创建 ISR?

“/”应用程序中的服务器错误。“web.config”配置文件中创建一个 <customErrors> 标记 求详细的设置方法

当我尝试在 /Library/Application Support/ 中创建文件夹“efiLinq”时出现权限被拒绝错误

在 Android Q 的外部存储中创建 App-Specific 文件夹