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

标签 c++ arrays struct member-functions

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

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

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

ma​​in.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);
};

关于c++ - 如何将动态结构数组传递给成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31833177/

相关文章:

c++ - 安装 visual studio 2013 后 visual studio 2012 崩溃

c - 返回指向结构的指针后出现段错误

java - 玩家对象数量超过 30 个

java - 如何使用具有动态 id 的 JsonArray 解析 jsonObject 作为整数开始

regex - golang 删除数组的一个维度

MATLAB:嵌套函数和结构

c - 从C开始,结构和函数简单程序,返回数据可能错误

c++ - 错误 C2783 : '_Ty &&std::forward(remove_reference<_Ty>::type &&) throw()' : could not deduce template argument for '_Ty'

c++ - SFML 2.0 中需要的警告框功能

c++ - h264编码视频流ffmpeg C++