我想为静态类提供一个通过流输入值的方法。
代替:
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()
做一些特殊的事情)。