Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我应该使用什么设计模式来避免这里的伪代码?_C++_Design Patterns - Fatal编程技术网

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()=0getrestrialServices