【问题标题】:Declare and implement pure virtual destructor in one line?在一行中声明和实现纯虚拟析构函数?
【发布时间】:2013-04-26 12:52:06
【问题描述】:

我正在制作一个纯虚拟析构函数来强制一个类是抽象的,除了 ctor 之外不包含任何方法。我将其作为仅标头实现

struct abstractSchema
{
    abstractSchema(...): ... { ... }
    virtual ~abstractSchema() = 0;    
};
inline abstractSchema::~abstractSchema(){}

是否有像(非法的)virtual ~abstractSchema(){} = 0; 这样的语法糖可以让我在一行上声明和定义,而不是像上面的例子那样拆分定义和实现?

【问题讨论】:

    标签: c++ abstract-class virtual-destructor


    【解决方案1】:

    这是尽可能接近的:

    struct abstractSchema
    {
        virtual ~abstractSchema(){}
        protected: abstractSchema(...): ... { ... }
    };
    

    它不是抽象的,但它不能自己实例化,因此可能会满足您的需求。

    【讨论】:

      【解决方案2】:

      你可以:

      struct abstractSchema
      {
          virtual ~abstractSchema() = 0 {}
      };
      

      不确定符合标准的编译器,但 MSVC (2010) 可以很好地编译此代码。

      【讨论】:

      • @Fanael 您可以向 Microsoft 提出上诉。我知道 gcc 不会编译它。 Microsoft Visual C++ 可以。
      • -1:关于 C++ 的问题,而不是某些特定实现的扩展。不过,您可以对正确的进行象征性的 +1。
      猜你喜欢
      • 1970-01-01
      • 2011-09-04
      • 1970-01-01
      • 2011-03-03
      • 1970-01-01
      • 2016-01-22
      • 2014-02-02
      • 2012-01-28
      • 1970-01-01
      相关资源
      最近更新 更多