我的 modBusSHARED 变量是我在某个类.cpp中需要的变量。
何时我想在没有重新实例的情况下从main.cpp中调用它们? 也许我需要一个单身人士?在qt中有一个方法,我从main调用class而没有构建单例?
我使用的是Qt 5.9。
Iterator a= listA.iterator();
Iterator b= listB.iterator();
while(a.hasNext()){
while(b.hasNext()){
if(String.valueOf(a.next()).split(",")[1].equals(String.valueOf(b.next()).split(",")[0])){
listC.add(String.valueOf(a.next()).replaceAll("tf", String.valueOf(b.next()).split(",")[1]));
}
}
}
答案 0 :(得分:0)
您可以使用static ModbusMasterMobile * modbus;
其他课程,并在创建后者后立即将其初始化为&modBusSHARED
。
然后,您将可以从另一个类的所有实例访问该对象。
拥有单例是为了防止意外创建该类型的多个实例。但是你的情况并不值得单独使用,你需要做的就是不再创建那个对象的实例。初始化静态指针后,它将指向该实例。
// in Class.h
class Class {
public:
static ModbusMasterMobile * modbus; // now you can use modbus inside Class
// ... other stuff
};
// in Class.cpp
ModbusMasterMobile * Class::modbus = 0;
// in main.cpp
ModbusMasterMobile modBusSHARED;
Class::modbus = &modbus; // initialize it
// from this point on Class can use modbus
在Class
初始化之前,请确保modbus
不使用main.cpp
。
答案 1 :(得分:0)
这个我的例子
static QMutex mainMutex;
...
MainController* MainController::s_instance = NULL;
...
MainController* MainController::getInstance()
{
if(!s_instance){
QMutexLocker lock(&mainMutex);
if(!s_instance){
s_instance = new MainController;
}
}
return s_instance;
}
int MainController::exec(int argc, char *argv[])
{
QApplication a(argc, argv);
initializeControllers();
initializeSplashScreen();
initializeLoginScreen();
startCommunicationToServer();
return a.exec();
}
int main(int argc, char *argv[])
{
return MainController::getInstance()->exec(argc,argv);
}