对于这个基本问题,我深表歉意,但我不知道。我知道您可以像这样初始化一个类:

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/

10-12 19:47