有人给了我以下C++代码片段来尝试 - 现在我已经失去了与他们的联系(这是一个很长的故事).无论如何,它不会编译 - 我得到一个错误
错误C2512:'mstream':没有合适的默认构造函数可用
任何人都可以解释为什么,以及解决它需要什么.
class mstream : private ostream
{
public:
mstream& operator << (char *value)
{
printf ("[%s]\n", value);
return *this;
}
mstream& operator << (int value)
{
printf ("[%u]\n", value);
return *this;
}
};
mstream g_mcout;
Run Code Online (Sandbox Code Playgroud)
编辑:哎呀,错过了这个......
ostream& mcout ()
{
return g_mcout;
}
ostream& SgDebug ()
{
return g_mcout;
}
Run Code Online (Sandbox Code Playgroud)
仅供参考:这个奇怪的代码的原因与将C++与C程序合并有关.printf()实际上将被更改为my_printf(),它可以执行各种自定义操作.
ostream没有默认构造函数; 隐式创建的默认构造函数因此而mstream无效.您需要提供ostream一个流缓冲区:
class mstream : private ostream
{
public:
mstream() :
ostream(/* whatever you want */)
{}
/* Maybe this is more appropriate:
mstream(std::streambuf* pBuffer) :
ostream(pBuffer)
{}
*/
// ...
};
Run Code Online (Sandbox Code Playgroud)
所以它可以构建.你放在那里取决于你想要做什么.
| 归档时间: |
|
| 查看次数: |
2607 次 |
| 最近记录: |