0

すべての関数で使用できるグローバル変数をいくつか定義しようとしていますが、メイン プログラムから初期化したいと考えています。誰でも構文を手伝ってもらえますか? まだC++クラスなどの初心者であることに注意してください。このプログラムの同じコピーを複数回実行する必要があり、このプログラムの複数のインスタンスで同じ共有クラスを持ちたくないため、新しいクラスを確実に作成する必要があります本体のクラス。また、言及したい-printvars-は私にとって事前に構築された関数であり、それにポインター変数を渡すことを制御できません-その関数ではグローバル変数のみを使用できます。

class gvars
{
   public:
   int x=0;
   int y=0;
   gvars() {}
   ~gvars() {}
};

std::unique_ptr<gvars> *g=NULL;  // Must be a pointer to class

//I can't pass any parameters to this function
//Only have control over the body of the program to access global vars
void printvars()
{
   std::cout << (*g).x << " " << (*g).y << std::endl;
}

int main()
{

  if (g==NULL)
  {
     g=new gvars();  // This is critical  - create a new class here only
  }

  (*g).x=10;
  (*g).y=20;

  printvars();  // Expected output :  10   20

  delete g;

  return 0;
}
4

1 に答える 1

1

コードは行だけを除いて良いです。変更してみる

std::unique_ptr<gvars> *g=NULL;  // Must be a pointer to class

gvars*g=NULL;

プログラムは、実行のたびにクラスの新しいインスタンスを確実に作成/削除します。またprintvars、正常に動作するはずです。

于 2013-05-19T02:12:53.177 に答える