我正在寫一些代碼,檢查是否插入了特定的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',對嗎? –