提问者:小点点

基于lamda的纯虚函数实现


我可以使用lambda实现一个纯虚拟函数吗,类似于Java接口实现?


共1个答案

匿名用户

不是直接的。 不过,您可以通过一些间接方式。

struct interface {
    virtual auto execute() -> int = 0;
};

template<typename T>
struct lambda_impl : interface, private T {
    lambda_impl(T l) noexcept : T{l} {}

    auto execute() -> int override {
        return T::operator()();
    }
};

现在可以像下面这样构造一个lambda_impl:

auto instance = new lambda_impl{
    []{ return 42; }
};

instance->execute();