3

我正在尝试制作一个自定义 cout 类,当我尝试运行不处理链接的代码版本时,它将文本输出到控制台输出和日志文件(out<<"one"<<"two")它工作正常,但是当我尝试让它处理链接时,它给了我“这个运算符函数的参数太多”。我错过了什么?

class CustomOut
{
    ofstream of;

public:
   CustomOut()
   {
     of.open("d:\\NIDSLog.txt", ios::ate | ios::app);
   }

   ~CustomOut()
   {
     of.close();
   }

   CustomOut operator<<(CustomOut& me, string msg)
    {
    of<<msg;
    cout<<msg;

    return this;
}};
4

1 回答 1

5

您需要一个operator<<返回对对象实例的引用的成员:

class CustomOut
{
  ...

  CustomOut& operator<<(string const& msg)
  {
    // Process message.
    f(msg);

    return *this;
  }
};

这将允许您以CustomOut链接方式“流式传输”到您的班级:

CustomOut out;
out << str_0 << str_i << ... << str_n;
于 2012-08-15T17:42:50.580 回答