title: Inheritance from a pure abstract class without default constructor
body: <p>I have an pre-defined pure abstract class which I don't want to touch. It's declared like:</p>
  
  <pre><code>class A {
  public:
    inline virtual ~A();
    A(const A&amp;);
    A operator=(const A&amp;);
    virtual void someMethod();
  };
  </code></pre>
  
  <p>The class has no member variables &amp; none of these functions are having any implementation, so it should be equal to: <code>virtual void someMethod() = 0;</code>.
  I want to implement this pure abstract class in my own class (because I need to add member variables to implement the function <code>someMethod()</code>) without changing the declaration from <code>class A</code>, but there are two problems:</p>
  
  <p>1.) <code>class A</code> has no default constructor, but only a copy-constructor and assignment operator declared. So I won't be able to create an instance from my subclass, because <code>A::A: no appropriate default constructor available</code>.</p>
  
  <p>2.) Even assuming, <code>class A</code> would have a default constructor declared and defined (If I add <code>A(){}</code> to the class declaration), I would get 2 linker errors for someMethod() and destructor from <code>class A</code>.</p>
  
  <p>My own code looks like:</p>
  
  <pre><code>#include &lt;memory&gt;
  
  class B : public virtual A {
  public:
    B() {}
    inline virtual ~B() {}
    B(const B&amp;) {}
    virtual void someMethod() override {}
  };
  
  int main(int argc, char*argv[]) {
    auto object = std::make_unique&lt;B&gt;(B());
    return 0;
  }
  </code></pre>
  
  <p>Any advice what I'm doing wrong here?</p>