Ошибка при компиляции std::thread

Рейтинг: 1Ответов: 1Опубликовано: 02.11.2014

Доброго времени суток.

Начал учить потоки за 11 стандартом в Qt!

Вот у меня есть простенький код:

#include <QCoreApplication>
#include <thread>
#include <iostream>

using namespace std;
void func();

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    MyThread th1;
    th1.run();

   return a.exec();
}
void func()
{ 
    cout << "This string from thread!"<<endl;
}

Так вот, на вторую строчку (библиотеку thread) ругается компилятор, мол, не знает такой.
Я читал, что нужно в файле с расширением .pro дописать CONFIG += c++11. Дописал, но ничего не изменилось!

Подскажите, пожалуйста.

Обновление

#include <QDebug>
#include <QCoreApplication>
#include <iostream>
#include <QThread>

void foo()
{
    std::cout << "This string from thread!"<<endl;
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    std::thread t(foo);
    std::t.join();
    return a.exec();
}

Почему компилятор ругается?

Ответы

▲ 1

А где у Вас объявлен класс MyThread? В Qt такого вроде нет, в стандартной библиотеке такого тоже нет, он там называется std::thread.

upd

Если хочется использовать треды от c++11, то вот рабочий код

#include <iostream>
#include <thread>

void foo()
{
    std::cout << "This string from thread!"<<std::endl;
}

int main(int argc, char *argv[])
{
    std::thread t(foo);
    t.join();
    return 0;
}

компилировать так

g++ thr.cpp -std=c++11 -pthread

И это работает перпендикулярно к Qt.