我正在尝试定义一些全局变量,该变量应在所有函数中可用,但想从主程序进行初始化。有人可以帮我语法吗?请注意,对于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;
}

最佳答案

除了行之外,代码是好的。
尝试改变

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




gvars*g=NULL;


程序肯定会在每次运行时创建/删除类的新实例。同样,printvars应该可以正常工作。

09-06 16:40