gpt4 book ai didi

c++ - 模板函数 "Subscript requires array type",但适用于较小的项目。为什么?

转载 作者:太空狗 更新时间:2023-10-29 21:28:55 26 4
gpt4 key购买 nike

以下代码是我在一个较大项目中编写的插值函数的一部分。此函数的第一个版本返回 myScalar yval,但我对其进行了修改以返回一个标志,表明该函数是否有效。

我的问题是这样的。以下代码在 codepad.org 和较小的 Visual Studio 项目中单独运行时编译。但是,在我的大型项目中,出现错误 C2109“下标需要数组或指针类型”。可能出了什么问题?

提前致谢! -- 乔

using namespace std;

template <class myScalar, class myXVec, class myYVec>
int finterp(int mode, myXVec xarray, myYVec yarray, int num_pts, myScalar xval, myScalar &yval)
{
myScalar dx, dydx, xmin, xmax;
int success_flag = 0;

if (num_pts < 1) return success_flag;
yval = yarray[0]; //Visual Studio error C2109

//some more calculations are here

success_flag = 1;
return success_flag;
}

int main()
{
double *xvec, *yvec;
xvec = new double [5]; yvec = new double [5];
for (int i = 0; i < 5; i++)
{
xvec[i] = (double)i;
yvec[i] = (double)i+1;
}
double x, y;
x = 3.0;
int success = finterp(1, xvec, yvec, 5, x, y);
cout << y << " " << success << endl;
return 0;
}

输出:

1> j:\london_study\irasshell_2011-05-13\iras_src\templateutilityfunctions.h(74): 
error C2109: subscript requires array or pointer type
1> j:\london_study\irasshell_2011-05-13\iras_src\hydpowclass.cpp(41) :
see reference to function template instantiation 'int finterp<double,std::vector<_Ty>,double>(int,myXVec,myYVec,int,myScalar,myScalar &)' being compiled
1> with
1> [
1> _Ty=double,
1> myXVec=std::vector<double>,
1> myYVec=double,
1> myScalar=double
1> ]

最佳答案

根据您的评论,在您的真实代码中只有 double正在为 yarray 传递而不是 double*std::vector<double> .这是一个足够小但不正确的重现的简单案例——真正的错误在于您的真实代码。

关于c++ - 模板函数 "Subscript requires array type",但适用于较小的项目。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6073887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com