通过lambda实现纯虚函数
Pure virtual function implementation through lambda
我可以使用 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();
我可以使用 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();