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

时间:2015-08-05 12:55:04

标签: c++ arrays struct member-functions

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

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

我需要在类之外声明struct数组,而不是成员,我不能使用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;
    // ...
}

1 个答案:

答案 0 :(得分:1)

只需将struct定义移至MyClass.h或其自己的单独标头文件中:

<强> MyClass.h

#include <iostream>

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