为什么我不能从ostringstream派生出来?

时间:2012-05-31 23:43:27

标签: c++ stringstream

  

可能重复:
  Why does writing to temporary stream fail?

我正在尝试从ostrginstream派生一个类来获取一些自定义日志记录代码。奇怪的是,写入流的第一件事总是被破坏。这是一个最小的,独立的演示程序:

#include <iostream>
#include <sstream>
using namespace std;

class Test : public ostringstream
{
public:
    Test()  { ; }
    ~Test() { cerr << "!" << str() << "!" << std::endl; }
};

int main(void)
{
    Test() << "Hello" << ", " << "World";
}

预期输出为:!Hello, world!

实际输出为:

!0x8049d14, World!

我假设我正在创建和使用临时对象的方式有问题。

如果不能轻易修复,是否有其他方法可以获得相同的语义?我正在寻找的是能够轻松创建一个对象,转移到它,然后在析构函数中使用完整的消息做一些事情。 (用例是自定义日志记录代码。析构函数将加时间戳,检查严重性等。)

0 个答案:

没有答案