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()
做一些特别的事情)。
我想提供一个静态方法 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()
做一些特别的事情)。