Я использую библиотеку pthreads, и когда я создаю поток, я даю ему указатель на объект, который является шаблонным типом.
Я неопытен с шаблонами (только что прочитал о них сегодня), и мне нужно привести параметр void * из объявления метода, pthread запускает к шаблонному типу, чтобы я мог получить доступ к его членам. Короче что-то, что выглядит так:
Короче как то так:
template <typename T>
class A {
...
...
...
void aMember() { ... }
};
int main() {
A<int> a;
pthread_create(..., ..., &run, &a);
...
...
...
}
void *run(void *arg) {
(A*)arg->aMember()
}
Моя проблема в том, что я получаю все эти ошибки, которые я не знаю, как исправить. Я действительно понимаю ошибки, но не знаю решения. Вот ошибки:
ошибка: ожидаемое первичное выражение до (токен
ошибка: пропущены аргументы шаблона перед * токеном
ошибка: ожидаемое первичное выражение до) токен
ошибка: ожидается `) 'перед' info '
Я просто не понимаю, как я мог узнать типы аргументов A, когда я приводил его один раз в потоке?
Я использую шаблоны C ++: полное руководство в качестве справочного / учебного ресурса и должен сказать, что я переполнен всей информацией, необходимой для полного понимания шаблонов. Мне было интересно, есть ли у кого-нибудь решение проблемы, или он мог бы указать мне другой источник, который мог бы дать ответы.
Как всегда, я очень ценю вашу помощь.
EDIT / UPDATE
Похоже, что добавление контекста к моей проблеме может помочь. В качестве альтернативы может быть кто-то может предложить другое решение, используя другой дизайн.
Я использую libcurl для выполнения HTTP-запросов, и в зависимости от полученного ответа я создам объект определенного типа (таким образом, шаблоны). Я создаю новый поток для каждого запроса, который я хочу сделать, чтобы все работало асинхронно.