如何将动态结构数组传递给成员函数?

How to pass a dynamic array of structs to a member function?

我想知道如何将动态分配的结构数组从主函数传递给 class 的成员函数。我不一定需要在成员函数中更改它的值,只需打印它即可。

如果我像下面代码片段中的整数数组那样做,我会发现 MyStruct 未在 MyClass.hMyClass.cpp 文件中定义。 (这是有道理的)
如果我在 MyClass.h 中包含 main.cpp,我会得到很多奇怪的错误。另一个想法是在成员函数参数中添加 struct,但这也会导致其他错误。

我需要在 class 之外声明结构数组,而不是作为成员,而且我不能使用 STL 容器。

main.cpp:

#include "MyClass.h"

int main()
{
    MyClass my_class;

    struct MyStruct
    {
        int a;
        int b;
    };

    MyStruct* struct_array = new MyStruct[4];
    // Fill struct array with values...
    my_class.printStructArray(struct_array);
}

MyClass.h:

#include <iostream>
class MyClass
{
    // ...
    void printStructArray(MyStruct* struct_array);
};

MyClass.cpp:

#include "MyClass.h"

void MyClass::printStructArray(MyStruct* struct_array)
{
    std::cout << struct_array[0].a << struct_array[0].b;
    // ...
}

只需将 struct 定义移动到 MyClass.h 或它自己单独的头文件中:

MyClass.h

#include <iostream>

struct MyStruct {
  int a, b;
};
class MyClass {
  // ...
  void printStructArray(MyStruct* struct_array);
};