Class(函数)作为流接收器

Class (function) as stream sink

我想提供一个静态方法 class 通过流输入值。

而不是:

MyClass::inputText("some text");
MyClass::inputText(std::to_string(123));

我想要:

MyClass << "some text";
MyClass << 123;

或更好的配置:

MyClass(config) << "some text";
MyClass(config) << 123;

在互联网上搜索,我只找到了如何使用 class 作为参数而不是接收器来实现 << 和 >> 的教程。

谁能给我一个提示,该怎么做?

使MyClass成为其他class的静态实例:

class MyClass_t {
    template <typename T>
    MyClass_t operator<<(T const& ) { ... }
};

static MyClass_t MyClass;

这样,你想怎么用就怎么用:

MyClass << 123; // calls MyClass_t::operator<<(int const& )

MyClass(config) 工作可以通过多种方式进行。 MyClass 是一个接受配置的函数,returns 是某个可流式传输对象的实例。或者它是一个 class 并且该表达式将创建一个临时的,它将在该行的末尾被销毁(也许您可以利用它并让 ~MyClass() 做一些特别的事情)。