我正在使用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