其他分享
首页 > 其他分享> > c-是否可以实现__super宏?

c-是否可以实现__super宏?

作者:互联网

请告诉我是否有一种方法可以手动实现Microsoft特定的__super宏…

解决方法:

class Base{
public:
  void func(){
    // something
  }
};

class Derived : public Base{
public:
  void func(){
    Base::func(); // just use the base class name
  }
};

虽然我认为这不是您想要的,并且您希望每个类都具有通用访问权限?我不知道直接的解决方案,但是您可以随时为您的直接基类键入:

class Derived : public Base{
  typedef Base super; // typedef accordingly in every class
public:
  void func(){
    super::func();
  }
};

或者,如果您确实想要,甚至有一个仅用于typedef的中间类.

template<class Base>
struct AddSuper : public Base {
protected:
  typedef Base super;
};

class Derived : public AddSuper<Base> {
public:
  void func(){
    super::func();
  }
};

请注意,您不应忘记在每个派生类中都重新输入typedef,否则您的调用链中会出现漏洞.

缺点之一:整个构造会炸毁多个基类. :/

标签:c,gcc,macros,visual-c
来源: https://codeday.me/bug/20191011/1894414.html