2010-12-01 73 views
5

我收到以下錯誤:無法初始化靜態QList?

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; 

回答

7

您無法使用<<初始化對象。 =通常不存在operator=() - 這是一種特殊的語法,與調用構造函數基本相同。

像這樣的東西可能會奏效

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

其中的emptyList()是

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

,是一個列表的副本建設,除了一些優化,創建的列表的副本。

+2

謝謝。我用了類似於你提供的東西。我使用了新的QList ()<< ...;它似乎工作。你看到使用這種方法的潛在問題嗎? – dfetter88 2010-12-01 02:39:39

1

這條線不是QList Cube :: colorList的初始化/定義。它正在調用插入運算符,這個對象還沒有被定義(QList Cube :: colorList)。

我不知道QT,因此無法評論如何真正初始化這個類。