【问题标题】:Error C3493: residual' cannot be implicitly captured because no default capture mode has been specified错误 C3493:residual' 无法隐式捕获,因为未指定默认捕获模式
【发布时间】:2026-01-19 20:15:01
【问题描述】:

作为我数值方法研究的一部分,我正在编写一个函数来解决流值问题。这是程序的“肉”,但它会出现许多奇怪的错误,这很奇怪,因为我在其他程序中使用了相同的代码而没有任何错误。

 void solve_stream(void)
    {
          double residual, residual_total;
        int resid_count, count=0;

        do
        {
            residual_total=0.0;
            resid_count=0;

            for(int i=0;i<maxi;i++)
                for(int j=0;j<maxj;j++)
                    if((i+j)%2==count%2)
                    {
                        residual= P[i][j]*e[i][j]-f[i][j];
                        if(i<maxi-1) residual+= P*[i+1][j]*a[i][j];
                        if(i>0) residual+= P[i-1][j]*b[i][j];
                        if(j<maxj-1) residual+= P[i][j+1]*c[i][j];
                        if(j>0) residual+= P[i][j-1]*d[i][j];

                        residual_total+= fabs(residual);
                        resid_count++;
                    }

            residual_total = residual_total/resid_count; //average residual
            count++;

            if(count%100==0) cout<<"-";
        }
        while(residual_total>1.0);
    }
  1. 在第 155 行,以 if(i'less than' maxi-1) 开头的那个,编译器在 '+' 之前返回 'error C2143: syntax error : missing ']' 即使残差被定义为双倍!

  2. 对于所有定义的变量,它返回'error C3493:'residual'不能被隐式捕获,因为没有指定默认捕获模式';即使是 i 和 j!

【问题讨论】:

    标签: c++


    【解决方案1】:
    P*[i+1][j]
    

    什么是P?它似乎是一个数组,但在这里你将它相乘。

    【讨论】:

      【解决方案2】:

      这看起来很可疑:

      P*[i+1][j]
      

      你可能是说

      P[i+1][j]
      

      【讨论】:

      • 谢谢,你不知道我因为一些细微的错误一直在看这个多久!
      最近更新 更多