如何将动态结构数组传递给成员函数?
How to pass a dynamic array of structs to a member function?
我想知道如何将动态分配的结构数组从主函数传递给 class 的成员函数。我不一定需要在成员函数中更改它的值,只需打印它即可。
如果我像下面代码片段中的整数数组那样做,我会发现 MyStruct
未在 MyClass.h
和 MyClass.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);
};
我想知道如何将动态分配的结构数组从主函数传递给 class 的成员函数。我不一定需要在成员函数中更改它的值,只需打印它即可。
如果我像下面代码片段中的整数数组那样做,我会发现 MyStruct
未在 MyClass.h
和 MyClass.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);
};