![](/img/trans.png)
[英]What sort of design pattern should I be using here to make full use of modern C++?
[英]What design pattern should I use to avoid dummy code here?
我有一個基礎課-
class content
{
private:
int m_data;
public:
int getdbhandle() { return m_sql_db; }
void setData(int data) { m_data = data; }
virtual int getterrestrialServices { qDebug()"This is a dummy interface"; }
};
class telecontent: public content
{
virtual int getterrestrialServices { qDebug()" Real implementation here"; }
};
現在,當產品類型為tele時,類內容將實例化為telecontent。 但是,當產品類型為通用產品時,虛擬界面打印會不斷出現。 我該如何避免呢? 是否有任何設計模式強制基類不實現虛擬功能? 我想要一種有效的方法,以便僅派生類具有方法。 我不希望基類具有該方法。 但是,我無法修改調用方(代碼),因此不會調用該方法。 我想要策略設計的最佳方法,這樣可以避免虛擬界面。
是否有任何設計模式強制基類不實現虛擬功能?
純虛擬允許:
class content
{
private:
int m_data;
public:
virtual ~content() { }
int getdbhandle() { return m_sql_db; }
void setData(int data) { m_data = data; }
virtual int getterrestrialServices() = 0; // pure virtual
};
這意味着沒有人可以創建內容實例(將導致編譯器錯誤),因此,當有人從內容繼承時,它們必須提供getterrestrialServices()的實現(否則,它們將獲得編譯器錯誤)。
您需要的是純虛擬的,如下所示:
virtual int getterrestrialServices() = 0;
它將強制每個類繼承內容以實現它,而您將無法創建內容類,僅對從其繼承的類進行分類,因此您將沒有虛擬打印件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.