我想为静态类提供一种按流输入值的方法。
而不是:
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;以类作为参数而不是沉没。
有人可以给我一个提示吗,怎么做?
答案 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()
做一些特别的事情)。