我想有一个像cout一样但有一些选项的功能。
例如:MyFunc(0) << "Cats like to drink milk " << 2 << endl;
当它为0时,不应该是任何输出
当它像这样:
MyFunc(1) << "Cats like to drink milk " << 2 << endl;
我应该看到输出&#34;猫喜欢喝牛奶2&#34;。我从几个论坛上读到需要使用ostream,但我不确定如何将它用于我的目的。 MyFunc基本上是一个类,构造函数有1,0个选项。
我见过这样的事情,但我不知道它是如何运作的。
Log& operator<< (std::ostream &(*f)(std::ostream &)){
cout << *f;
return *this;
}
任何帮助表示赞赏。
答案 0 :(得分:0)
它基本上是这样的:
class CoutPlus {
public:
CoutPlus(int& i) : m_bOn(i) {}
template<class T> CoutPlus& operator<<(const T& val) {
if (m_bOn)
std::cout << val;
return *this;
}
private:
bool m_bOn;
};
您决定如何处理空构造函数和赋值,以及是否实现其他ostream的成员函数。