[英]Function pointer to template class member functions
我有一個模板化的類(部分)定義為
template <class T> MyClass
{
public:
void DoSomething(){}
};
如果我想從另一個類調用DoSomething,但是能夠在同一個地方為多個'T'類型執行此操作,我會因為方法函數指針被唯一地約束到類類型而陷入困境。 當然,每個MyClass都是不同的類型,所以我不能以'多態'的方式存儲MyClassDoSomething()的函數指針。
我的用例是我想在一個包含類中存儲一個“DoSomething”函數指針向量,這樣我就可以從一個地方發出對所有存儲類的調用。
有人有什么建議嗎?
好的,所以functor解決方案無法正常工作。 也許您應該讓您的模板類繼承自公共基礎“Interface”類。 然后你使用那些矢量。
像這樣的東西:
class Base {
public:
virtual ~Base(){}
virtual void DoSomething() = 0;
}
template <class T> class MyClass : public Base {
public:
void DoSomething(){}
};
std::vector<Base *> objects;
objects.push_back(new MyClass<int>);
objects.push_back(new MyClass<char>);
你知道,這正是我需要做的。 Bizzarly我把它作為一個對我早期使用有效的解決方案打了折扣,原因現在讓我感到厭煩。 我認為我被一些元編程的東西蒙蔽了眼睛,我正在同一個地方進行編譯時調度(即混亂的大腦中的編譯時間和運行時混亂)。
謝謝你的震撼!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.