便宜上、以下のアプローチを使用しています。つまり、より大きなプログラムで同じ myapp インスタンスにアクセスする便利な手段です。コードは私のマシンで正しくコンパイルおよび実行されますが、このアプローチに問題があるかどうかを尋ねたいですか?
たとえば、 this ptr はコンストラクターで the_app に割り当てられますか? それは大丈夫ですか?私の懸念は、オブジェクトがまだ構築されていることです。しかし、コンストラクターの最後の行なら大丈夫ですか?それとも、完全に構築されたときに使用される限り、完全なオブジェクトへのptrになるため、ポインタであるため問題ではありませんか?
#include <iostream>
using namespace std;
class myapp
{
public:
myapp() : m_data(0)
{
the_app = this;
}
void DoIt() { cout << "doing it\n"; }
static myapp* the_app;
private:
int m_data;
};
myapp* myapp::the_app = 0;
int main(int argc, char* argv[])
{
myapp app;
app.DoIt(); //doing it using member function
myapp::the_app->DoIt(); //accessing using static ptr
return 0;
}