我有以下參數模板類是否可以簡化這些C++模板參數?
template <class TObj, class TMsg, void (TObj::*TMethod)(TMsg*, Link*)>
class Slot : ...
當我實例化這個類然後我必須寫
Slot<MyObject, MyMessage, MyObject::myMethod>
這意味着類爲MyObject有一個名爲myMethod的方法期待MyMessage *爲第一個論點。
有沒有一種方法可以簡化Slot類實例化,以便我至少只能指定MyObject類一次?
如果可以在方法之後指定TMsg類型,它也會更直觀。像下面的內容就可以了:
Slot<MyObject::myMethod, MyMessage>
正在使用'MyObject :: operator()'選項嗎? – bitmask
否,因爲MyObject中可能有不同的方法,我們要爲其創建一個槽。方法名稱及其消息類型非常重要,因爲C++中的重載是合法的。然而,Link *參數總是存在於方法和基類中。 – chmike
@chmike:你可以用許多實現來重載'()',每個實現都有不同的參數集。看到我的答案。 – Nawaz