小编Yif*_*Lai的帖子

用多态成员函数替换lambda函数

我在多态类中具有以下成员,Parent并且我正在寻找一种替换foo为某种虚拟成员的方法bar

void Parent::myFunc() {
    // lots of variables
    // complicated calculations

    while (/* loop condition */) {
        // more variables and calculations

        auto foo = [&](int n) {/* ... */};

        foo(42);
        // want to replace with virtual
        // bar(42);
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是foo捕获了所有内容,而且我不知道授予bar相同访问权限的正确方法。

  1. 将所有内容都传递给baras参数会导致参数列表很大,这似乎不是一个很好的解决方案
  2. 我也可以将的局部变量myFunc()转换成的成员Parent,但这会不必要地延长这些变量的寿命,尤其是对于循环变量。

c++ polymorphism lambda anonymous-function

6
推荐指数
1
解决办法
78
查看次数

标签 统计

anonymous-function ×1

c++ ×1

lambda ×1

polymorphism ×1