首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >全局函数中获取对象地址或NULL的统一方法

全局函数中获取对象地址或NULL的统一方法
EN

Stack Overflow用户
提问于 2011-07-22 12:42:24
回答 2查看 175关注 0票数 3

我正在为C++构建一个基于树的调试/日志记录系统。

它的“用户界面”是一个宏,它将用户定义的消息和调用点信息(文件、行、对象地址)传递给特殊函数,然后由该函数执行日志记录。

此函数使用对象地址按对象实例对消息进行分组。

目前它看起来是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// in logging system header
#define msg (event_level, message) \
    do_logging_ (event_level, __FILE__, __LINE__, this, message)

...

// in code
msg (MSG_WARNING, "some text");

我想问,有没有一些统一的方法(在msg宏中可用)来获得NULL而不是this,其中this没有定义(全局/静态函数)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-22 12:47:32

您可以更改宏定义:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define msg (event_level, message, THIS) \
    do_logging_ (event_level, __FILE__, __LINE__, THIS, message)

用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msg (MSG_WARNING, "some text", this); // in member methods
msg (MSG_WARNING, "some text", NULL); // otherwise
票数 4
EN

Stack Overflow用户

发布于 2011-07-22 13:11:29

我认为如果不修改你的类中你想要记录的代码,这是不可能的。但是,如果你愿意这样做,你可以从一个模板中派生出你想要日志记录功能的所有类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    template <typename T>
    class loggable_class
    {
    protected:
        T* get_this() { return static_cast <T*> (this); }
    };

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    class A : public loggable_class<A>
    {
        ...
    };

非成员函数中将使用函数get_this()的另一个全局定义:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    inline void* get_this()
    {
         return NULL;
    }

日志记录宏将如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    #define msg (event_level, message) \
        do_logging_ (event_level, __FILE__, __LINE__, get_this(), message)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6790175

复制
相关文章
iOS 获取 IP 地址方法iOS 获取 IP 地址方法
一直以来我们获取IP地址方法都是直接百度一查,或者老代码里就已经存在这部分代码然后直接使用。今天归纳一下常见的两种方法以及如何选择:
韦弦zhy
2021/11/24
7.8K0
iOS 获取 IP 地址方法iOS 获取 IP 地址方法
ajax中success函数无法改变全局或局部变量的值
在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值。代码如下: function modifyMissionSchedule(x,obj) {     var PHONE = getPhone();     var stream = {         "MISSIONID":obj.parent().next("li").attr("id"),         "PHONE":PHONE,         "SCHE
NateHuang
2018/03/14
2.4K0
获取CDN或Nginx的用户真实ip地址
目前问题:腾讯云CDN作为前端,Apache作为后端的情况下,Apache只能获取到腾讯云CDN前端的ip地址,而无法获取到用户的真实ip地址,在这种情况下,后端是Apache如何获取用户真实ip地址?
云知识Online
2018/05/03
7.3K1
获取CDN或Nginx的用户真实ip地址
Cypress系列(29)- 获取页面全局对象的命令
https://www.cnblogs.com/poloyy/category/1768839.html
小菠萝测试笔记
2020/06/19
8710
Linux Shell脚本中获取本机ip地址方法
倘若有多个网卡,可能会出现多个不同网段的IP,这个时候如果还是执行上述命令就会返回多个IP,如下:
小菠萝测试笔记
2020/06/09
27.4K0
Linux Shell脚本中获取本机ip地址方法
「R」获取R包中的函数和对象列表
问题 你想知道包里有什么。 方案 在一个新的 R 会话中使用 search() 可以查看默认加载的包。 search() #> [1] ".GlobalEnv" "package:ellipse" #> [3] "package:Cairo" "package:grid" #> [5] "package:dplyr" "package:scales" #> [7] "package:Rmisc" "package:plyr" #>
王诗翔呀
2020/07/03
7.3K0
Java去除对象中为null的字段
如果返回的是对象 model 转成的 json,那么 json 中会存在 “xxxx” : null。和前端进行交互时在使用Swagger调试接口的时候会出现接口数据中有 null值,结果很难看:
Jensen_97
2023/07/20
8000
Java去除对象中为null的字段
Java 中检查空字符串(null或空白)的方法有几种?
来源:https://www.toutiao.com/i6713087515768652301
JavaFish
2019/10/16
12.4K0
dhclient命令 – 动态获取或释放IP地址
dhclient命令的作用是:使用动态主机配置协议动态的配置网络接口的网络参数,也支持BOOTP协议。
用户9239730
2021/11/29
3.2K0
图片url地址的生成获取方法
在写博客插入图片时,许多时候需要提供图片的url地址。作为菜鸡的我,自然是一脸懵逼。那么什么是所谓的url地址呢?又该如何获取图片的url地址呢?
全栈程序员站长
2022/11/08
16.1K0
图片url地址的生成获取方法
ARouter 传自定义对象获取值为null的解析 及解决方法
我在使用 withObject 传自定义对象的时候,发现一个BUG,在传值的时候,会走SerializationService的object2Json方法,但是在获取值的时候,竟然不调用parseObject这个方法来转回对象。
Xiaolei123
2019/02/21
3.4K0
ARouter 传自定义对象获取值为null的解析 及解决方法
request对象获取数据的方法_request对象的运用方法
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说request对象获取数据的方法_request对象的运用方法,希望能够帮助大家进步!!!
Java架构师必看
2022/08/01
1.8K0
dotnet 获取本机 IP 地址方法
本文告诉大家如何在 C# .NET 获取本机 IP 地址 有两个获取方法,第一个方法是通过 DNS 获取 var host = Dns.GetHostEntry(Dns.GetHostName()); foreach (var ip in host.AddressList) { // 下面的判断过滤 IP v4 地址 if (ip.AddressFamily == Address
林德熙
2022/08/07
2.9K0
dotnet core 获取 MacAddress 地址方法
因为在 dotnetcore 是没有直接和硬件相关的,所以无法通过 WMI 的方法获取当前设备的 Mac 地址
林德熙
2022/08/04
4770
获取URL地址中的GET参数
/*-----------------实现1--------------------*/ function getPar(par){ //获取当前URL var local_url = document.location.href; //获取要取得的get参数位置 var get = local_url.indexOf(par +"="); if(get == -1){ return false; } //截取字符串
似水的流年
2018/01/14
6.7K0
dotnet 获取本机 IP 地址方法
本文告诉大家如何在 C# .NET 获取本机 IP 地址 有两个获取方法,第一个方法是通过 DNS 获取 var host = Dns.GetHostEntry(Dns.GetHostName()); foreach (var ip in host.AddressList) { // 下面的判断过滤 IP v4 地址 if (ip.AddressFamily == Address
林德熙
2019/09/13
2.7K0
点击加载更多

相似问题

调用全局对象方法导致null或不是IE8中的对象

12

python中的全局方法或函数

11

如何获取启动线程的get方法或函数地址?

10

选择全局或对象打印函数

24

Javascript对象选项:函数或null

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文