Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
3bOONAL
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 22
#1

Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов - C++

24.04.2014, 20:39. Просмотров 1580. Ответов 14
Метки нет (Все метки)

C++
1
Tvector.push_back(thread(threadFunction,mas,i,3,4,76,55));
сама функция
C++
1
2
3
4
5
6
7
8
9
void threadFunction(int *arr, int b,int c , int z,int q,int r)
{
     g_lock.lock();
 
 cout << arr[b]+1<<c<<z<<q<<endl;
 cout << "entered thread " << std::this_thread::get_id() << std::endl;
 
     g_lock.unlock();
}
1 IntelliSense: отсутствуют экземпляры конструктора "std::thread::thread", соответствующие списку аргументов
типы аргументов: (void (int *arr, int b, int c, int z, int q, int r), int [3], int, int, int, int, int)
Имеется такой участок кода и такая ошибка, работа с потоками стандарта C++11, в статье на хабре сказано что данные потоки могут принимать любое количество параметров, но тут что то не получается, помогите разобраться^^
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 20:39     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов
Посмотрите здесь:

C++ Изменение параметров конструктора без аргументов
Отсутствуют экземпляры конструктора C++
Отсутствуют экземпляры шаблон функции "print", соответствующие списку аргументов C++
Проблемы с конструктором. "отсутствуют экземпляры перегружена функция GradeBook::GradeBook" C++
Отсутствуют экземпляры перегруженной функции getline C++
Вставка в map и ошибка "Отсутствуют экземпляры конструктора" C++
Incomplete type used in nested type specifier - Итерация по списку аргументов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
24.04.2014, 20:42     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #2
mas - вас ист дас?
Tvector - определение какое?
3bOONAL
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 22
24.04.2014, 21:07  [ТС]     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #3
C++
1
vector<thread> Tvector;
mas - int mas[3]={1,2,3}; передаю в функцию
newbie666
Заблокирован
24.04.2014, 21:12     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #4
весь код показыай
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.04.2014, 22:40     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #5
Я не экстрасенс, но попробую угадать что автор хочет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <vector>
#include <thread>
#include <mutex>
 
std::mutex g_lock;
 
void threadFunction(int *arr, int b, int c , int z, int q)
{
    std::lock_guard<std::mutex> locker(g_lock);
    std::cout << arr[b]+1 << " " << c << " " << " " << z << " " << q << std::endl;
    std::cout << "thread id:  " << std::this_thread::get_id() << std::endl;
}
 
int main()
{
    std::vector<std::thread> Tvector;
    int mas[] = {1, 2, 3};
 
    Tvector.emplace_back(threadFunction, mas, 0, 100, 100, 100);
    Tvector.emplace_back(threadFunction, mas, 1, 200, 200, 200);
    Tvector.emplace_back(threadFunction, mas, 0, 300, 300, 300);
    Tvector.emplace_back(threadFunction, mas, 1, 400, 400, 400);
 
    for (auto& th : Tvector) th.join();
 
    return 0;
}
newbie666
Заблокирован
24.04.2014, 22:49     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #6
Цитата Сообщение от DiffEreD Посмотреть сообщение
Я не экстрасенс
и не прогер , твой код даже не компильнётся

Добавлено через 3 минуты
тут ты опечатался что ли, надо так:
C++
1
2
3
4
Tvector.emplace_back(std::thread(threadFunction, mas, 0, 100, 100, 100));
Tvector.emplace_back(std::thread(threadFunction, mas, 1, 200, 200, 200));
Tvector.emplace_back(std::thread(threadFunction, mas, 0, 300, 300, 300));
Tvector.emplace_back(std::thread(threadFunction, mas, 1, 400, 400, 400));
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.04.2014, 22:50     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #7
gcc 4.8.2 пропускает. А что не так?
newbie666
Заблокирован
24.04.2014, 22:51     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #8
P.S.: emplace_back какой выпендрёж, не проще простым пуш баком ?

Добавлено через 53 секунды
Цитата Сообщение от DiffEreD Посмотреть сообщение
gcc 4.8.2 пропускае
ну значит это булшит какой то, тебе ж надо объект создать и потом уже засунуть в вектор
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.04.2014, 22:54     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #9
emplace_back конструирует объекты по месту так что вызывать конструктор std::thread не обязательно.
newbie666
Заблокирован
24.04.2014, 23:00     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #10
Цитата Сообщение от DiffEreD Посмотреть сообщение
emplace_back конструирует объекты по месту так что вызывать конструктор std::thread не обязательно.
Шта? Где про это написано? Пруфани
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
24.04.2014, 23:08     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #11
Ну, к примеру, вот на cppreference.com
newbie666
Заблокирован
24.04.2014, 23:24     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #12
Цитата Сообщение от DiffEreD Посмотреть сообщение
Ну, к примеру, вот на cppreference.com
всё вижу, не знал редко этой штукой пользовался, а когда пользовался, просто сувал туда новый объект... странно что это так же нормально работало. Меня тут строчка настроражила:
If the new size() is greater than capacity() then all iterators and references (including the past-the-end iterator) are invalidated. Otherwise only the past-the-end iterator is inva
Этот emplace разве не реалоцирует память под больший размер контейнера, если размер превышен? Или о чём там написано? Что если новый размер, после имплейса, будет больше капасити - то всё - хана - все указатели становятся инвалидами?
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.04.2014, 23:54     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #13
Цитата Сообщение от 3bOONAL Посмотреть сообщение
работа с потоками стандарта C++11, в статье на хабре сказано что данные потоки могут принимать любое количество параметров,
Если 12-я студия, то не любое.
3bOONAL
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 22
24.04.2014, 23:58  [ТС]     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #14
вот да да! у меня 12, с 6 параметрами норм, 7 и все, не хочет, а очень надо )) прога в том что перемножение матриц и в функцию потока передаются все 3 массива(1 и 2 множитель, и пустое произведение) а также параметры цикла (3, т.е количество итераций) и плюс 1 параметр это сама функция, по стандарту С++11. как по-другому сделать не представляю. здесь приведена аналогия, количество параметров так же 7 и так же не работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 23:59     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов
Еще ссылки по теме:

C++ Как узнать количество аргументов конструктора?
C++ LU разложение - отсутствуют экземпляры конструктора
Потоки. Ошибка отсутствуют экземпляры конструктора, соответствующие списку аргументов C++
C++ В чём отличия конструктора копирования и конструктора перемещения? Где и как их нужно использовать?
Отсутствуют экземпляры перегруженной функции log10 и log (фото ниже) - C++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5415 / 4811 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.04.2014, 23:59     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов #15
Многопоточность при сортировке массивов

Добавлено через 41 секунду
Цитата Сообщение от 3bOONAL Посмотреть сообщение
вот да да! у меня 12,
Ставьте 13-ю, и будет вам счастье...
Yandex
Объявления
24.04.2014, 23:59     Потоки с стандарте C++ 11. Отсутствуют экземпляры конструктора, соответствующие списку аргументов
Ответ Создать тему
Опции темы

Текущее время: 14:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru