我想構建傳遞兩個函數與可變參數數目的參數對象:如何在一個構造函數中使用兩個可變參數來綁定兩個函數?
class PhaseSetControlProperty : public ControlProperty {
public:
template<typename FuncKicked, typename... ArgsKicked, typename FuncActivated, typename... ArgsActivated>
PhaseSetControlProperty(const std::vector<std::string> &kickedPhaseNames, const std::vector<std::string> &activatedPhaseNames, FuncKicked funcKicked, ArgsKicked ...argsKicked, FuncActivated funcActivated, ArgsActivated... argsActivated): ControlProperty("PhaseSetControl")
{
getModel()->addProperty(new StringListProperty("kickedPhaseNames", kickedPhaseNames));
getModel()->addProperty(new StringListProperty("activePhaseNames", activatedPhaseNames));
getModel()->addProperty(new StringListProperty("activated", activatedPhaseNames, funcActivated, argsActivated...));
getModel()->addProperty(new StringListProperty("kicked", kickedPhaseNames, funcKicked, argsKicked...));
}
};
實例化看起來是這樣的:
model->addProperty(new PhaseSetControlProperty(kickedphasenames, activephasenames, &BDlines::kickedPhasesFunctionCallback, this, std::placeholders::_1, &BDlines::activePhasesFunctionCallback, this, std::placeholders::_1));
這和std ::佔位符:: _ 1是一個可變argments。
的解決方案之前,看着這樣的:
kicked_property = new FunctionProperty("kicked", &BDlines::kickedPhasesFunctionCallback, this, std::placeholders::_1);
activated_property = new FunctionProperty("activated", &BDlines::activePhasesFunctionCallback, this, std::placeholders::_1);
如何c + +知道哪些參數屬於哪個模板參數?這如何以簡單的方式實現?
我目前的解決方案是使用兩個額外的功能,添加屬性「激活」,然後屬性「踢」,基本上像舊版本,但我只想使用一個單一的電話。
請換行等等。您問題的重要部分不會隱藏在滾動條的後面。 –