Не можете инициализировать статический QList? - PullRequest
5 голосов
/ 01 декабря 2010

Я получаю следующую ошибку:

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 ]

8 голосов
/ 01 декабря 2010

Вы не можете инициализировать объект с <<.=, который обычно присутствует, это не operator=() - это специальный синтаксис, который по сути аналогичен вызову конструктора.

Что-то подобное может работать

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

, гдеEmptyList () имеет значение

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

и является копией построения списка, за исключением некоторой оптимизации - копии созданного списка.

1 голос
/ 01 декабря 2010

Эта строка не является инициализацией / определением QList Cube :: colorList. Он вызывает оператор вставки для объекта, который еще не определен, а именно (QList Cube :: colorList).

Я не знаю QT и поэтому не могу комментировать, как действительно инициализировать этот класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...