Простая программа не будет компилироваться с qtcreator - PullRequest
0 голосов
/ 02 ноября 2011

Я установил qt 4.7.4 и gcc 4.6.1. Я пытался скомпилировать эту программу, но она не скомпилируется для меня:
Почему я не могу скомпилировать этот код?

#include <QApplication>
#include <iostream>
using std::cout;

int main(int argc, char** argv)
{
    QApplication app(argc,argv);
    int a[] = {1,2};
    for (auto e : a)
    {
        cout << e << '\n';
    }
    return app.exec();
}  

Ошибка:
C: ... \ main.cpp: 9: ошибка: 'e' не называет тип

Ответы [ 5 ]

4 голосов
/ 02 ноября 2011

for (auto e : a)
- диапазон, основанный на цикле из стандарта c ++ 11.Вам нужно включить c ++ 11 в gcc с помощью командной строки -std = c ++ 0x.

2 голосов
/ 02 ноября 2011

Для меня это работает (g ++ 4.6.1, Qt 4.7.1):

g++ --std=c++0x -I$QTDIR/include/QtGui -I$QTDIR/include \
    test.cpp -L$QTDIR/lib -lQtCore -lQtGui
1 голос
/ 02 ноября 2011

Вам нужен --std = c ++ 0x флаг компилятора.

0 голосов
/ 02 ноября 2011

Во-первых, вы хотите быть уверены, что ваш файл C ++ скомпилирован с диалектом C ++ 11 (т. Е. С использованием флага -std = c ++ 0x для g++), поскольку вы используете auto функция вывода типа.

Тогда, я думаю, что ваш цикл for может быть недопустимым.Возможно, вы хотите, чтобы a был std::vector<int>

0 голосов
/ 02 ноября 2011

Я предполагаю, что qtcreator (и qmake) не передают компилятору флаг, указывающий ему использовать C ++ 2011.

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