スレッドとして実行する必要がある関数を含むクラスがあります。これを行う適切な方法 (私が理解している形式) は、これらの関数を static として宣言することです。このクラスのメソッドを使用するには、そのクラスのインスタンスが必要なので、コンストラクターで自己に初期化される静的変数を作成します。効率性とプログラム ロジックにどのような影響がありますか?
class Foo
{
private: Foo* this_instance;
Foo()
{
this_instance=this;
}
void FooBar()
{
...
}
static void* Bar()
{
if (this_instance==NULL) return 1; //throws are not catched are they?
this_instance->FooBar();
return 0;
}
}
実際のコードではありませんが、私の質問をより明確にするためです。
アプリケーションは実際に動作し、helgrind/memcheck で確認しましたが、エラーは当面の問題とは関係ありません。これを含め、すべての解決策が回避策のように見えるため、この質問をしています。他のものは医師の愛によって言及されたもののようなものであり、他のものはヘルパー静的メソッドを使用しています。
私のアプローチが、ある時点で壮大な失敗につながるかどうか疑問に思っています。何らかの理由で、私には知られておらず、他の経験豊富なプログラマーには明らかです。