所以这是我的情况:我有一个类foo驻留在foo.cpp中,头文件foo.h包含在我的main.cpp中。我需要能够在main.cpp中声明一个foo对象作为全局变量,以便它可以在main.cpp中的所有函数中使用,而无需每次都传递它的引用。问题是,foo的构造函数需要一个变量,直到main.cpp中的main函数中途,才会从用户那里检索变量。我以为我可以这样做是这样的:在全局声明类对象,但没有参数
static foo myFoo;
作为主要功能之上的全局变量,然后将必要的数据从用户获取后(我们称之为“可变”),我可以打电话:
myFoo = new foo(variable);
我却得到一个错误与此:
error: no matching function for call to ‘foo::foo()’
引用符合static foo myFoo;
所以它基本上是说我试图用一个构造函数声明一个带有零参数的构造函数的实例,如果没有的话。
所以我的问题是:有没有办法将标签myFoo从foo声明为全局变量,以便程序编译,然后实际上可以使用带有变量的构造函数实例化?
我知道我可以做这样的事情:
string temp = "";
static foo myFoo(temp);
以上的main(),然后定义了一些功能,我可以做
myFoo.setVar(variable);
,当我需要。对我来说,这是非常丑陋的,并且需要包含函数setVar,除了避开这个问题之外,它没有明确的目的。思考?你有
'myFoo =新富(可变)'你不能有' new'这里 –
static foo myFoo;是对象和新foo(变量);是指针指向对象的指针吗? – Nik
您的解决方案很好。但是,你的意思是'static foo * myFoo;',以便'myFoo = new foo(variable);'实际上可以工作。 – Peter