C++ 我应该使用什么设计模式来避免这里的伪代码?
我有一个基本类-C++ 我应该使用什么设计模式来避免这里的伪代码?,c++,design-patterns,C++,Design Patterns,我有一个基本类- 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: p
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
};
这意味着没有人可以创建内容的实例(将导致编译器错误),因此当一些人从内容继承时,他们必须提供getterrestalservices()的实现(否则,他们将再次遇到编译器错误)。您需要的是纯虚拟的,就像这样:
virtual int getterrestrialServices() = 0;
它将强制继承内容的每个类实现它,而您将无法创建内容类,只能从中继承类,这样您就不会有伪打印 为什么不让它成为纯虚拟的呢?别忘了虚拟析构函数。可以像这样使用纯虚拟函数:
virtual int getterrestrialServices()=0但是这个方法getterrestrialServices只在一个派生类中有意义,而另一个派生类根本不需要它。但是,我只能使用基类类型访问派生类。就像Base*telecontentPtr=newtelecontent();这是一个不同的问题,你的问题问什么,纯虚拟做你在这里问什么。您在注释中指出的问题是一个不完整的设计,唯一的解决方法是使用dynamic_cast获取一个实现此方法的特定派生类型。@user3629119-那么您的设计就不好了。为什么要在代码的通用部分调用高度专用的函数getrestrialServices
?