The template function "Subheading requires an array type", but works in small projects. What for?

The following code is part of an interpolation function that I wrote as part of a larger project. The first version of this function returned yval myScalar, but I changed it to return a flag indicating whether the function worked.

My question is that. The following code compiles on launch both on codepad.org and in a small Visual Studio project. In my larger project, however, I get error C2109 "index requires array or pointer type". What could be wrong?

Thanks in advance! - Joe

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;
}

Conclusion:

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> ] 
+3
source share
2 answers

double* std::vector<double> double yarray. , , - .

+2

, , finterp myYVec = double*. [0].

, finterp? Visual Studio c2109.

, , -, .

EDIT. , . , finterp myYVec = double - . , double*.

+1

All Articles