我想知道是否可以在一个函数中实现监听器/抽象类的Java样式实现。

在Java中,如果我具有如下接口(interface):

public interface ExampleListener {
    public void callExampleListenerMethod();
}

我知道可以在方法中实现此接口(interface),以便快速使用,例如:
someRandomJavaFunction{
   //do some stuff
   ExampleListener object = new ExampleListener() {
        @Override
        public void callExampleListenerMethod() {
            //do other stuff
        }
   });
}

如果我有一个像这样定义的抽象类,现在可以用C++进行第二部分了
class ExampleListener {

  public:
     virtual ~ExampleListener(); //virtual destructor is apparently important

     virtual void callExampleListenerMethod() = 0; //method to implement

};

当然,我可以简单地将其用作基类,并且必须实现该方法。但是有可能做与Java类似的“运行中”实现吗?

最佳答案

不,在C++中没有等效的“即时”方法实现。您可以在C++中执行的最接近的操作是a local class

void f()
{
    class MyLocalClass: public Listener
    {
        virtual void MyMethodOverride()
        {
             //...
        }
    }

    Listener* pListener = new MyLocalClass;
    //...
}

关于抽象类的函数定义中的C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23567165/

10-13 01:03