gpt4 book ai didi

C: 在不显式传递 `this` 的情况下调用类方法?

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

我想知道预处理器逻辑/宏魔法是否可以让人们在 C(11) 中像在典型的 OO 语言中那样做,即

instance->method(a, b)

instance.method(a, b)

而不是

method(instance, a, b) //instance is 'this'

?

确实这只是一个排序问题,但我很想知道是否有人使用宏实现了类似的词序。我更喜欢这样的想法,即不必在每次方法调用时都将 this 作为客户端代码中的显式参数传递。因此问题。

最佳答案

使用 GCC,您可以像这样创建一个宏:

#define MCALL(obj, method, ...) do {\
typeof(obj) this;\
this->method(this, ## __VA_ARGS__);\
} while(0)

但这使用了 GCC 扩展的 typeof

它将不带参数工作,因为它使用 GCC 扩展的 ## 运算符。参见 this manual page有关 GCC 如何实现可变参数宏的更多信息。

当然,实际上做这样的事情可能不是一个好主意,因为您几乎是在重新设计语言本身,从而使其他人更难理解。

关于C: 在不显式传递 `this` 的情况下调用类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28087114/

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