我可以使用Lambda实现纯虚函数吗,就像Java接口实现一样吗?
不能直接实现,但可以通过一些间接方法实现。
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 = lambda_impl{
[]{ return 42; }
};
instance.execute();
auto instance = new lambda_impl
应该改为 interface* instance = new lambda_impl
吗?目前(在隔离的代码中)struct interface
已经过时了。但是对于 Java 开发人员来说可能很清楚。 - Mikael H