我自定义了一个函数:
//PointStruct是我自定义的点结构
PointStruct deBoor(int degree,vector<PointStruct> DT,vector<double> knot,float u,int i,vector<double> weight);
这个函数的调用放到了一个2层循环中,具体的代码我就不说了,大概意思就是
for(int i=0;i<3;i++)
 for(int j=0;j<3,j++)
    e=deBoor(m_degree,DT,m_knot,u,i,m_weight);
当i=0时执行没问题,可是当i=1时,程序就报错:
debug error
damage:after normal block
为什么呢?我该怎么办?

解决方案 »

  1.   

    vector<T>不能作为参数传递。
    可以传递vector<T>&
      

  2.   

    PointStruct 的成员变量中有指针吗?不管怎么说,建议你用
    PointStruct deBoor(int degree,const vector<PointStruct>& DT, const vector<double>& knot,float u,int i, const vector<double>& weight);
      

  3.   

    上面两位说的方法类似,区别在于,楼1用一个向量的引用作为参数传递进去,而楼二是用的是向量常数,在楼2中定义的向量在deBoor中是不能改变的,是这样的吗?
      

  4.   

    都是引用,不过const vector<double>& 虽然是引用,不过编译器可以帮助你保证内容不被修改