类(函数)作为流接收器

时间:2015-07-11 20:40:19

标签: c++ stream operators

我想为静态类提供一种按流输入值的方法。

而不是:

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

我想:

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

或更好的可配置:

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

在互联网上搜索,我只找到了如何实施的教程&lt;&lt;和&gt;&gt;以类作为参数而不是沉没。

有人可以给我一个提示吗,怎么做?

1 个答案:

答案 0 :(得分:1)

使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()做一些特别的事情)。