类(函数)作为流接收器



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

代替:

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

我想要:

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

或更好的配置:

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

搜索互联网,我只找到了如何实现<<>>类作为参数,而不是sink

谁能给我点提示,怎么做?

MyClass设置为其他类的静态实例:

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是一个函数,它接受一个配置并返回一个可流对象的实例。或者它是一个类,该表达式将创建一个将在行结束时销毁的临时对象(也许您可以利用这一点并让~MyClass()做一些特殊的事情)。

相关内容

  • 没有找到相关文章

最新更新