2017-07-16 46 views
0

我正在尋找一種方法來調用多個類中的相同函數,而無需爲每個類分別創建函數。C++:調用多個類的相同功能

例子:

class A{ 
public: 
void update(); 
} 

class B{ 
public: 
void update(); 
} 

現在我想創建一個可以採取兩種class Aclass B並調用update()功能的功能。我一直在尋找堆棧溢出/谷歌解決方案,但找不到任何東西。我在看模板,但無法找到任何可行的方法。在我的項目中,我有大約五六個班級,每個班級都需要調用update()函數。我正在使用通用基類,但update()函數需要位於派生類中。我在上一個項目中遇到了同樣的問題,無法弄清楚。

+3

'模板空隙callUpdate(T&OBJ){obj.update(); }' –

+2

你有沒有聽說過虛擬功能? – 2017-07-16 18:05:23

+0

謝謝!這就是我一直在尋找的東西。現在只需要在頭文件中查看更多模板。 – Mseb

回答

2

爲什麼你不能在你的基類中定義純虛擬更新方法? (或甚至一個第二基類/接口僅具有此虛擬方法)。

class IUpdate 
{ 
    public: 
    virtual void update() = 0; 
} 

class A : public IUpdate 
{ 
    public: 
    void update(); 
} 

與同爲類B.

+1

這個答案爲什麼被低估?最好的解決方案是使用純虛函數創建一個接口。 – Jeremy

+0

謝謝我會研究這個,因爲它比模板更合乎邏輯。當我得到它的工作時,我會立即解決。 – Mseb

+0

它的工作謝謝你!爲不同類別的人複製同樣的功能讓我很頭疼。 – Mseb