-1
我有一個基類和一個閉包,基類總是被特定的類擴展,但是它沒有確定基類具體包含的內容。在C++中使用閉包來改變行爲
現在我想重寫基類的行爲,同時改變特定類的行爲。
這裏是什麼,我想實現一個簡單的例子:
class base
{
public:
inline void print()
{
std::cout << "test!" << std::endl;
}
};
template <class T>
class closure
{
public:
inline closure()
{
if (!std::is_convertible<T*, base*>::value) {
throw "error!";
}
this->baseInstance = new T();
}
/*
* In this class the behavior of test should be extended/overridden.
* in this case base::print
*/
~closure()
{
delete this->baseInstance;
}
inline T * operator->()
{
return this->baseInstance;
}
private:
T * baseInstance;
};
class test : public base
{
public:
inline void otherStuff()
{
/* ... **/
}
/* .. */
};
在這種情況下,我想重寫base::print()
,但保持test::otherStuff()
全部功能時,它就會通過關閉調用。