高手指路啊~~~~~~~~
下面是一个模版函数
template <class T, int N>
static inline bool ldltdc(T **A, T *rdiag)
{
T v[N-1];
int xx = N; //here is the problem, why N = N+1????
for (int i = 0; i < N; i++) {
for (int k = 0; k < i; k++)
v[k] = A[i][k] * rdiag[k];
for (int j = i; j < N; j++) {
T sum = A[i][j];
for (int k = 0; k < i; k++)
sum -= v[k] * A[j][k];
if (i == j) {
if (unlikely(sum <= T(0)))
return false;
rdiag[i] = T(1) / sum;
} else {
A[j][i] = sum;
}
}
}
return true;
}
在mfc中调用出现下面的情况:
ldltdc<float,3>(w, diag);
调试的时候模版函数中的N=4而不是N=3。
同样的调用在console程序中没有问题,N=3。
这是为什么啊?