是否可以实现__super宏?

Rya*_*yan 2 c++ macros gcc visual-c++

请告诉我是否有办法手动实现Microsoft特定的__super宏...

Xeo*_*Xeo 7

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

class Derived : public Base{
public:
  void func(){
    Base::func(); // just use the base class name
  }
};
Run Code Online (Sandbox Code Playgroud)

虽然我认为这不是你想要的,你想要每个类的通用访问?我不知道直接解决方案,但您可以随时使用typedef您的直接基类:

class Derived : public Base{
  typedef Base super; // typedef accordingly in every class
public:
  void func(){
    super::func();
  }
};
Run Code Online (Sandbox Code Playgroud)

如果你真的想要,甚至可以为typedef设一个中间类.

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

class Derived : public AddSuper<Base> {
public:
  void func(){
    super::func();
  }
};
Run Code Online (Sandbox Code Playgroud)

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

一个缺点:整个构造爆发了多个基类.:/