class Foo {
public:
void methodA();
};
class ManagedFoo {
Foo fooInst;
public:
void methodA() { doSomething(); fooInst.methodA();}
};
現在我想讓ManagedFoo作爲模板,不僅管理任何類,而且在調用Foo的任何函數之前,首先調用doSomething。C++模板能夠從父類「轉發任何類函數」嗎?
template<typename _TyManaged>
class Manager {
_TyManaged _managedInst;
void doSomething();
public:
/*Forward every function called by _managedInst*/
/*How to write this?*/
};
我想讓它一樣,讓這兩類之間的替換,就像這樣:
Foo* foo = new Foo();
foo->methodA();
Manager<Foo> managedFoo = new Manager<Foo>();
managedFoo->methodA(); //Hope it call Manager::doSomething() first then call _managedInst.methodA();
能否C++模板11做這樣的事情?如果答案是肯定的,如何?
只是想了解你想要什麼,爲什麼不使用fooInst本身?這應該是一個代表嗎? – poljpocket
看看如何爲'std :: shared_ptr'實現運算符' - >',這可能足夠接近。 – woolstar
對不起,我應該讓自己更清楚,我已經更新了這個問題,謝謝〜 – Rayer