错误 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<SomeType> = MyContainer;
?您能否显示更多上下文(即周围的代码)?更具体地说,请向我们展示真实代码。
抱歉,我已经添加了更多信息。
【参考方案1】:
这是因为您试图分配给一个类型。 QVector<double>
是一种类型,而不是变量声明或您可以分配的任何其他内容。这意味着两个示例实际上都是错误的。
我认为你的意思是声明成员变量MyContainer
,你应该使用它
QVector<double> MyContainer;
要将容器初始化为特定大小,您必须使用构造函数初始化器列表:
Device()
: MyContainer(100)
...
有关初始化列表的更多信息,请参阅例如this tutorial,或this reference。
【讨论】:
我很抱歉“=”只是我帖子上的一个错字,我已经更正了。此外,非常感谢您,这些链接给了我很多提示并澄清了我的问题。现在我知道如何解决这个错误了,谢谢!以上是关于错误 C2059:尝试在已知大小的头文件中创建 Qt 容器时出现“常量”的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 pyqt 中创建文件浏览器,但 qtreewidgetitem 出现意外 bool 错误
致命错误:无法在 smartFoxServer 中创建日志文件
“/”应用程序中的服务器错误。“web.config”配置文件中创建一个 <customErrors> 标记 求详细的设置方法
当我尝试在 /Library/Application Support/ 中创建文件夹“efiLinq”时出现权限被拒绝错误