簡體   English   中英

#define函數參數c ++

[英]#define function arguments c++

我在一個公共接口中調用了一組函數,並將這些函數指針存儲在一個公共容器中,所以我有

typedef void(*CommandFunction)(const InputArgsMap &, const ArgumentMap *);

有了這個說,如果沒有復制粘貼參數列表,聲明這種類型的函數的最佳方法是什么? 我想通過#define實現這個,但還有其他(更好的,oop)方式嗎?

例如,是否可以做類似的事情

#define CMD_ARGS (const InputArgsMap &, const ArgumentMap *)
void _fcn_1(CMD_ARGS);
void _fnc_2(CMD_ARGS);

如果聲明一個函數而不是指針,則鍵入別名

typedef void CommandFunction(const InputArgsMap &, const ArgumentMap *);

然后你可以用它來聲明函數

CommandFunction _fcn_1;
CommandFunction _fcn_2;

在定義參數列表時,您仍需要寫出參數列表。

有沒有其他(更好的,oop)的方式?

覆蓋抽象接口的虛擬成員函數可能更好,具體取決於您正在做什么。 如果你這樣做,你將不得不復制參數列表,你似乎覺得這很令人反感; 但是在現代C ++中,你至少可以使用override說明符來確保你做對了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM