gpt4 book ai didi

c++ - 连接两个 C++ 语句

转载 作者:太空宇宙 更新时间:2023-11-04 11:40:36 24 4
gpt4 key购买 nike

我有如下简单的日志记录类。

#include <iostream>
#include <string>

using namespace std;

class log
{
public:
log(){};
~log(){};
log & operator << ( int x ){ cout << x; return * this;}
log & operator << ( string x ){ cout << x; return * this;}
log & operator << ( log & (log::*pf)() ){ (this->*pf)(); return * this;}
log & end( ) { cout << "\r\n"; return * this;}
};

log l;

#define end &log::end;
#define error( z ) l << "ERROR " z << end;
#define warn( z ) l << "WARN " z << end;

int main()
{
int y = 20;

error ( << y );
}

有什么方法可以像这样在 main 中编写我的代码吗?

error << y;

这里的基本思想是避免用户使用宏end

即我不希望用户像下面这样编写代码

error << y << end;

最佳答案

在我看来你是在重新发明方轮!事实上,那里有很多记录器库(boost.log 是一个很好的库)。另一种解决方案是让用户编写标准语法,包括对 std::endl 的调用:

error << x << std::endl; 
warn << y << std::endl;

您可以通过将字符串"warn""error" 传递给类log 的构造函数来实现。您必须按照 Overload handling of std::endl? 中的说明拦截 std::endl 参数.

关于c++ - 连接两个 C++ 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com