从外部函数/类设置动态数组的新大小?

时间:2015-09-30 08:58:31

标签: c++ arrays function class resize

我的主代码声明了一个需要从外部函数调整大小的指针。例如:

double *vect =NULL;
classobj object;

object.func(vect);

//--- print the outcome
for(int j=0; j<4; ++j)
   cout << vect[j] << " .. " << endl;

其中,函数func()是另一个文件(例如classobjclassobj.h)中定义的.cpp的一部分

void classobj::func(double *_vect){

  _vect  = new double[4];

  for(int j=0; j<4; ++j)
    _vect[j] = 3.0*j +1 ;

};

问题是vect尚未调整大小。我得到分段错误。请问在这种情况下如何使用指针?

1 个答案:

答案 0 :(得分:3)

您正在传递对Array的引用,然后您正在创建一个新Array并将其分配给函数中的指针。您需要传递指针的指针,然后重新分配该指针的地址:

void classobj::func(double **_vect){
    (*_vect)  = new double[4];

虽然此解决方案可行,但我建议使用std::vector来实现此目的,并通过引用该函数传递它