我正在写一些代码,检查是否插入了特定的MIDI设备,并且如果它不是代码,则每5秒重新检查一次,直到它插入。如何(重新)调用初始化对象的构造函数?
我的问题出现在检查列表中的设备 - 外部库没有重新检查端口的功能,因为它只在类的构造函数中执行。
我可以看到让我的代码重新检查设备列表的唯一方法是重新初始化类对象。
类对象在头文件中声明为ofxMidiIn midiIn;
,因为它在cpp文件中被全局使用。问题是如果我在cpp中的函数中重新声明,它看起来并没有替换全局范围中的对象,即使它本地很好。
要使用伪澄清:
在.H:
class foo {
ofxMidiIn midiIn; //first initialization does a port scan
};
中的.cpp:
void foo::setup(){
midiIn.listPorts(); //if this fails the recheck is triggered every 5 secs
}
void foo::run(){
//if setup failed then while (!recheck());
}
bool foo::recheck(){
ofxMidiIn midiIn;
midiIn.listPorts(); //this works in this (local) scope, but doesn't reassign midiIn globally
}
我不明白你真正要问的是什么,直到我看到答案;我认为'midiIn.listPorts()'不是实际上“重新检查端口”的部分,尽管名称不同。当你将'midiIn'描述为“类对象”时,我也感到困惑。你明白类定义数据类型,每个'foo'实例都有一个单独的'midiIn',对吗? –