我有一些C++代碼,我不能改變,只能通過改變頭文件。我有代碼並可以編譯它。C++宏定義包括點?
的問題是,我有一個函數指針的定義是這樣的(函數指針是那種無關,我想做的事情):
foo.bar();
我想改變與宏或東西:
#define foo.bar() FunCall()
問題據我所知,它是不可能在宏中使用點,有沒有其他方式?
編輯:
更多信息。我得到的代碼旨在運行單個實例,但是我正在封裝代碼以在類中運行多個實例。這讓我有些頭痛,我試圖結束。
我試圖要麼是使用宏和一些內聯函數或完整的第三種方式:
void function()
{
foo.bar();
}
我需要一些代碼,可以使上述等同於:
void class::function()
{
EventFuncTypedef f = foo.bar;
(this->*f)();
}
或者
void class::function()
{
class::FunCall();
}
以上所有代碼的工作問題是嘗試獲取由原點執行的選項1或2代碼。
做一個'struct'與功能'欄()'和'FunCall實現()',並創建一個全局變量'foo'。然後'foo.bar()'變成對'FunCall()'的函數調用。可以嗎? – Mine
你不能擺脫點。你只能以一種或多或少創造性的方式來使用它。 –
嚴格是不可能的,那實際上已經存在。我得到的代碼被創建爲作爲單個實例運行,我試圖將整個代碼包裝到多個實例的類中。這使成員函數指針變得複雜。我試圖想出新的創造性方法來包裝它 – ThomasG