假設我有一個符合 簡化到這個動態指定要使用基於模板類型的方法
template<typename t,typename u>
std::shared_ptr<bar> MyClass::getFunct(std::string SomeStr)
{
.....
std::map<std::string,std::shared_ptr<foo> > j;
....
std::shared_ptr<u> collection(new u());
for (auto val : j){
val.second->getMethodA() //Will return object of type t <----LINE A
}
}
現在的方法,我用它作爲
getFunct<FirstType>("SomeString")
getFunct<SecondType>("SomeString")
getFunct<ThirdType>("SomeString")
現在val.second
有3種方法
val.second->getMethodA() //returns a type of FirstType
val.second->getMethodB() //returns a type of SecondType
val.second->getMethodC() //returns a type of ThirdType
當前我使用的是 val.second->getMethodA()
與模板類型FirstType
有反正對我來說,指定要使用getMethodB
如果模板類型是SecondType
和使用getMethodC
如果模板類型爲ThirdType
這聽起來像XY的問題。你試圖解決什麼設計問題?綁定功能對象是可能的通過'std :: bind()' – lorro
讓我修復那個抱歉 –