私はpthreadsライブラリを使用しています。スレッドを作成するときに、テンプレート型のオブジェクトへのポインタを与えています。void *をテンプレート型にキャストするときにテンプレートパラメータ型を知らない
私はテンプレートに慣れていないので(今日読んでいるだけです)、メソッド宣言から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()
}
私の問題は、私は私が修正する方法がわからない、すべてのこれらのエラーを取得しています。私は実際にエラーを理解していますが、解決策を知らない。
エラー:期待の一次式の前(トークン エラー:*トークン エラーの前にテンプレート引数が不足して:前に予想される主な表現)トークン エラー:予想 `)情報」の前に『』
ここでエラーがありますスレッドの中で一度キャストしているときに、どのように引数型を知ることができたのか分かりません。
私は、C++のテンプレート:参考書/参考資料として、テンプレートを完全に理解するために必要なすべての情報を提供しています。私は、誰かが問題の解決策を持っているのだろうか、それとも答えを提供するかもしれない別のリソースの方向に私を指し示すことができるのだろうかと思っていた。
いつものように私はあなたの助けを大いに感謝します。
EDIT/UPDATE
私の問題にコンテキストを追加することに役立つかもしれないと思われます。あるいは、誰かが別のデザインを使って別のソリューションを提供しているかもしれません。
私はlibcurlを使用してHTTPリクエストを作成していますが、受け取ったレスポンスに応じて、特定のタイプのオブジェクト(したがってテンプレート)を作成します。すべてのリクエストが非同期で実行されるように、新しいリクエストを作成します。
なぜあなたはこのCをタグ付けしましたか? – GManNickG
申し訳ありません。私は以前に私の問題にコンテキストを追加すべきですが、Imはpthreadライブラリを使用しています。 – Chris