如何在 C++ 中传递动态结构数组?

How to pass Dynamic array of structures in c++?

我已经创建了一个动态结构数组,现在我愿意将它传递给 function.What 这样做的正确方法是什么?我应该在 MAIN 中的函数参数中添加什么?

void function(Data *family)
{
    //code
}
int main()
{
     struct Data{
        string name;
        int age;
        string dob;
    };
    Data *family = new Data[3];
    function(Data);    //ERROR in parameter i guess!
}

每个c++程序员都需要学习std::vector,也就是动态数组:

#include <vector>

struct Data{
        string name;
        int age;
        string dob;
};

void function(const std::vector<Data>& family)
{
    //code
}
int main()
{

    auto family = std::vector<Data>(3);//family now contains 3 default constructed Data
    function(family);
}
Not sure what actually what actually you are looking for, I guess you can try like this:
First define your structure outside from main so it would be accessible as function parameter. Then instead of Data pass object family to the function.

struct Data {
    string name;
    int age;
    string dob;
}; 
void function(Data *family)
{
    //code
}
int main()
{
    Data *family = new Data[3];
    function(family); 
} 

最好使用 std::vectorstd::shared_ptr 来使用更安全的方法。因为使用原始指针很容易出错。 如果你真的需要使用原始指针而不是你需要修复你的代码:

#include <string>
#include <iostream>

// "Data" should be declared before declaration of "function" where "Data" is used as parameter
struct Data {
  std::string name;
  int age;
  std::string dob;
};

void function(Data *family)
{
  std::cout << "function called\n";
}

int main()
{
  Data *family = new Data[3];
  // fill all variables of array by valid data
  function(family); // Pass variable "family" but not a type "Data"
  delete[] family; // DON'T FORGET TO FREE RESOURCES
  return 0; // Return a code to operating system according to program state
}