无法初始化静态QList?

时间:2010-12-01 02:25:30

标签: c++ qt static

我收到以下错误:

Cube.cpp:10: error: expected initializer before ‘<<’ token

以下是头文件的重要部分:

#ifndef CUBE_H
#define CUBE_H

#include <cstdlib>
#include <QtCore/QtCore>
#include <iostream>

#define YELLOW 0
#define RED 1
#define GREEN 2
#define ORANGE 3
#define BLUE 4
#define WHITE 5

using namespace std;

class Cube {
public:
  ...
  static QList<int> colorList;
  ...
};
#endif

这是给出错误的行:

QList<int> Cube::colorList << YELLOW << RED << GREEN << ORANGE << BLUE << WHITE;

2 个答案:

答案 0 :(得分:8)

您无法使用<<初始化对象。 =通常没有operator=() - 这是一种特殊的语法,与调用构造函数基本相同。

这样的事情可能会起作用

QList<int> Cube::colorList = EmptyList() << YELLOW << RED << GREEN << ORANGE << BLUE << WHITE;

其中EmptyList()是

QList<int> EmptyList()
{
   QList<int> list;
   return list;
}

并且是列表的副本构造,并禁止一些优化,即创建的列表的副本。

答案 1 :(得分:1)

该行不是QList Cube :: colorList的初始化/定义。它正在一个尚未定义的对象上调用插入运算符(QList Cube :: colorList)。

我不知道QT因此无法评论如何真正初始化这个类。