我正在使用pthreads库,并且在创建线程时我将它指向模板类型的对象。在将void *转换为模板类型时,不知道模板参数类型
我对模板经验不足(今天刚刚阅读了他们),并且需要将pthread运行的方法声明中的void *参数强制转换为模板类型,以便可以访问其成员。总之东西,看起来像这样:
总之是这样的:
template <typename T>
class A {
...
...
...
void aMember() { ... }
};
int main() {
A<int> a;
pthread_create(..., ..., &run, &a);
...
...
...
}
void *run(void *arg) {
(A*)arg->aMember()
}
我的问题是我得到所有这些错误,我不知道该如何纠正。我确实了解错误但不知道解决方案。下面是错误的:
错误:预期主表达式前(令牌 错误:前*令牌 错误缺少模板参数:预期主表达式前)令牌 错误:“之前‘的信息预期`)’
我只是没有看到我怎么能知道A的参数类型,当我在线程中一次投射它时?
我正在使用C++模板:作为参考/学习资源的完整指南手册,并且必须说我完全了解了需要完全理解模板的所有信息。我想知道是否有人解决了这个问题,或者可以指出另一个可能提供答案的资源。
一如既往,我非常感谢您的帮助。
编辑/ UPDATE
看来,加入背景下我的问题可能会有所帮助。或者,也许有人可以使用不同的设计提供不同的解决方案。
我使用libcurl发出HTTP请求,并根据我收到的响应我将创建一个特定类型的对象(因此模板)。我为每个要创建的请求创建一个新线程,以便一切都异步运行。
你为什么标记该C? – GManNickG 2011-04-08 00:35:47
对不起。我应该早些时候给我的问题添加上下文,但是我使用pthreads库。 – Chris 2011-04-08 16:32:25