对于这个基本问题,我深表歉意,但我不知道。我知道您可以像这样初始化一个类:
QFile file("C:\\example");
但是如何从全局变量初始化它呢?例如:
QFile file; //QFile class
int main()
{
file = ?? //need to initialize 'file' with the QFile class
}
最佳答案
1.简单答案
如果该类是可分配的/可复制的,则只需编写
QFile file; //QFile class
int main()
{
file = QFile("C:\\example");
}
2.使用间接
如果没有,您将不得不采取其他选择:
QFile* file = 0;
int main()
{
file = new QFile("C:\\example");
//
delete file;
}
或使用
boost::optional<QFile>
,std::shared_ptr<QFile>
,boost::scoped_ptr<QFile>
等。3.使用与单例相关的模式:
由于Static Initialization Fiasco,您可能要编写这样的函数:
static QFile& getFile()
{
static QFile s_file("C:\\example"); // initialized once due to being static
return s_file;
}
C++ 11使得这样的函数本地静态初始化线程也很安全(引用C++ 0x草案n3242,第6.7节:)
关于c++ - 初始化全局变量类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7923602/