我正在尝试定义一些全局变量,这些变量应该可用于所有函数但希望从主程序初始化。任何人都可以帮我解释语法吗?请注意,仍然有点初学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;
}
答案 0 :(得分:1)
代码很好,只有线路。 尝试更改
std::unique_ptr<gvars> *g=NULL; // Must be a pointer to class
到
gvars*g=NULL;
程序将在每次运行时创建/删除您的类的新实例。同样printvars
应该可以正常工作。