Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11653
Последний выпуск: 19.06.2015

LNK2019 unresolved external symbol - C++

88K
18 августа
buiko18
2 / / 08.08.2017
По сути я просто хочу написать метод, в который можно передать функцию и её параметры, и затем вернуть std::future, чтобы можно было забрать этот результат когда-нибудь.

.hpp
Код:
#pragma once

#include<future>

class threadpool
{
public:
    threadpool(size_t threadCount);
    virtual ~threadpool();

    template<class F, class ...Args>
    auto AddTask(F&& f, Args&&... args) ->
        std::future<typename std::result_of<F(Args...)>::type>;
};
.cpp
Код:
#include "threadpool.hpp"

threadpool::threadpool(size_t threadCount)
{
}

threadpool::~threadpool()
{
}

template<class F, class... Args>
auto threadpool::AddTask(F&& f, Args&&... args)
    -> std::future<typename std::result_of<F(Args...)>::type>
{
    return std::future<typename std::result_of<F(Args...)>::type>();
}
main.cpp
Код:
#include <iostream>
#include "threadpool.hpp"

int foo(int i1, int i2)
{
    std::cout << i1 + i2 << std::endl;
    return i2 - i1;
}

template<class F, class ...Args>
auto add_task(F&& f, Args&&... args)
    ->std::future<typename std::result_of<F(Args...)>::type>
{
    return std::future<typename std::result_of<F(Args...)>::type>();
}

int main()
{
    threadpool th(4);

//  Ошибка.
//  auto res = th.AddTask(&foo, 12, 3);
//  std::cout << res.get() << std::endl;

//  Работает.
    auto res2 = add_task(&foo, 12, 3);
    std::cout << res2.get() << std::endl;

    getc(stdin);
    return 0;
}
Ошибка:
1) Severity Code Description Project File Line Suppression State
Error LNK2019 unresolved external symbol "public: class std::future<int> __thiscall threadpool::AddTask<int (__cdecl*)(int,int),int,int>(int (__cdecl*&&)(int,int),int &&,int &&)" (??$AddTask@P6AHHH@ZHH@threadpool@@QAE?AV?$future@H@std@@$$QAP6AHHH@Z$$QAH1@Z) referenced in function _main thrpl2 D:Учёба3 курс1 семестр__TEMP__WinAPIthrpl2thrpl2Source.obj 1
2) Severity Code Description Project File Line Suppression State
Error LNK1120 1 unresolved externals thrpl2

Объясните причину этой ошибки и помогите её исправить пожалуйста.
232
19 августа
Ramon
1.0K / / 16.08.2003
В каком месте у вас происходит создание экземпляра (instantiation) шаблонного метода threadpool::AddTask и откуда берётся его определение для конкретных параметров шаблона?

PS: Всё более птичий, всё более хаскель...

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог