如何在 C++ 中的复杂程序中避免库条目类的多个实例?

问题描述

请原谅新手问题。我在多个类中创建了一组函数并将它们包装在一个静态库中(使用 Qt Creator 的 staticlib 配置)。在更高级别的程序中,我通过创建 MyLibrary 类的新实例来访问该功能,如下所示:

#include "mylibrary.h"
myLibrary *myLibrary;
myLibrary = new MyLibrary(); // new instance of the MyLibrary class (main entry)
myLibrary->initialize(); // initializes hardware properties

如果我只需要从程序中的一个地方访问库,这是可以的。但是,我想在多个线程中处理多个操作,并且我会将应用程序扩展到几个新类。 initialize() 方法配置硬件参数,这些参数只能在应用程序启动时完成一次。但是,我希望从应用程序的任何位置访问库的所有公共方法。我想实现这样的目标:

main.cpp

int main(int argc,char *argv[])
{
    ...
    MyLibrary::initialize(); // call the configuration method
    // Current issue: call to non-static member function without an object argument
    ...
}

classA.cpp

void doSomething()
{
    MyLibrary::setParametera(0); // possible after initialization
}

classB.cpp

{
    MyLibrary::getParametera(); // should return any value set by the user (for example "0" as above)
}

我在网上查看了可能的解决方案,我遇到的最常见的建议是在高级应用程序中使用单例模式。也许我可以避免这种情况,因为在这个阶段我仍然可以重新工作。您能否建议如何实现该目标?

解决方法

class 更改为 namespace。那么没有人可以实例化多个实例。

您的示例用法也完全适合命名空间。