簡體   English   中英

函數指針指向模板類成員函數

[英]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.

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