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

Set new size of dynamic array from an external function/class?

本文关键字:数组 新大小 动态 设置 函数 从外部      更新时间:2023-10-16

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

double *vect =NULL;
classobj object;
object.func(vect);
//--- print the outcome
for(int j=0; j<4; ++j)
   cout << vect[j] << " .. " << endl;

其中函数func()是classobj的一部分,在另一个文件中定义为

(例如classobj.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没有调整大小。我得到分割错误。在这种情况下如何使用指针,有什么想法吗?

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

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

虽然此解决方案可以工作,但我建议为此目的使用std::vector并通过引用将其传递给该函数