我有兩個類。第一類做一些事情,然後調用第二類方法。第一類的每種方法都是這樣做的。是否有可能使用某些宏自動化代碼實現?C++將函數名稱傳遞給宏並調用它
例子:
class A
{
void Do1()
{
Do task x
ClassB b;
b.Do1();
Do task y
}
void Do2()
{
Do task x
ClassB b;
b.Do2();
Do task y
}
}
是否有可能實現這種方式?這不起作用,但類似的東西。
#define VOID_FUNC(name) \
Do task x;\
ClassB b;\
b.##name##();\
Do task y;
class A
{
void Do1()
{
VOID_FUNC(__FUNCTION__);
}
void Do2()
{
VOID_FUNC(__FUNCTION__);
}
}
可能,但可愛的方法是使用模板,'的std :: bind',和'std :: function'。我肯定會讚揚一個答案,勾勒出這一點。 – Bathsheba
似乎沒有一種簡單的方法來創建你所要求的內容,而不那麼簡單的方法真正快速變得醜陋;如果你解釋爲什麼要這樣做,這可能會有所幫助,因爲可能有更好的方法來實現你的目的?看起來好像你想圍繞一個現有的類來編寫一個包裝,該類處理類使用的某種資源,其中任務x將獲取資源,任務y將釋放它。我想到的一個想法是,C++標準庫通常允許實際上可以適應的自定義分配器,即使對於日誌記錄等事情也是如此。 –