title: Why this error? "no appropriate default constructor available"
body: <p>Someone has given me the following C++ code snippet to try out - and now I have lost contact with them (its a long story). Anyway, it won't compile - I get an error </p>
  
  <blockquote>
    <p>error C2512: 'mstream' : no appropriate default constructor available</p>
  </blockquote>
  
  <p>Can anyone explain why, and what is needed to fix it.</p>
  
  <pre><code>class mstream : private ostream
  {
    public:
  
    mstream&amp; operator &lt;&lt; (char *value)
    {
      printf ("[%s]\n", value);
      return *this;
    }
    mstream&amp; operator &lt;&lt; (int value)
    {
      printf ("[%u]\n", value);
      return *this;
    }
  
  };
  mstream g_mcout;
  </code></pre>
  
  <p><strong>EDIT: Oops, missed this out...</strong></p>
  
  <pre><code>ostream&amp; mcout ()
  {
    return g_mcout;
  }
  ostream&amp; SgDebug ()
  {
    return g_mcout;
  }
  </code></pre>
  
  <p><strong>FYI:</strong> the reason for this strange looking code is all to do with merging a C++ with a C program. The printf()'s will actually be changed to my_printf()'s which do a wide variety of custom things.</p>