我想知道如何将动态分配的结构数组从main函数传递给类的成员函数。我不一定需要在成员函数中更改其值,只需打印它。
如果我这样做,就像我在下面的代码片段中使用整数数组一样,我得到MyStruct
和MyClass.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;
// ...
}
答案 0 :(得分:1)
只需将struct
定义移至MyClass.h
或其自己的单独标头文件中:
<强> MyClass.h 强>
#include <iostream>
struct MyStruct {
int a, b;
};
class MyClass {
// ...
void printStructArray(MyStruct* struct_array);
};