使用模板宏在 C 中实现自治 self 成员类型
在 C 中,模拟 PHP self 关键字的功能带来了独特的挑战。虽然可以使用自定义类型别名创建特定于类的实现,但这种方法需要重复指定类类型,从而为潜在错误留下了空间。为了解决这个问题,需要一个更全面的解决方案。
幸运的是,使用模板宏和可变参数模板的组合,我们可以实现 self.它的工作原理如下:
template <typename X, typename...Ts> class Self : public Ts... { protected: typedef X self; };
#define WITH_SELF(X) X : public Self<X> #define WITH_SELF_DERIVED(X,...) X : public Self<X,__VA_ARGS__>
class WITH_SELF(Foo) { void test() { self foo; } };
class WITH_SELF_DERIVED(Bar, Foo, Foo2) { /* ... */ };
这种方法提供了一种自主且灵活的方法来实现 C 中 PHP 的 self 关键字的等效项,消除了手动类复制的需要并减少了静默错误的可能性。
以上是C 模板宏如何模拟 PHP 的 self 关键字进行自主自引用?的详细内容。更多信息请关注PHP中文网其他相关文章!