【发布时间】:2015-08-05 12:55:03
【问题描述】:
我想知道如何将动态分配的结构数组从主函数传递给类的成员函数。我不一定需要在成员函数中更改其值,只需打印即可。
如果我像在以下代码 sn-p 中使用整数数组那样执行此操作,我会发现 MyStruct 未在 MyClass.h 和 MyClass.cpp 文件中定义。 (这是有道理的)
如果我在MyClass.h 中包含main.cpp,我会收到很多奇怪的错误。另一个想法是在成员函数参数中添加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;
// ...
}
【问题讨论】:
-
为什么不能使用标准容器?
-
因为这可能会循环进行数百万次,并且有人坚持认为 STL 容器对于我们的性能要求来说太慢了。我无法对此发表评论,因为我只是一名实习生。如果这种方式太复杂,我将使用 STL 容器。
-
无论是谁告诉你的,我都会打电话给 BS。使用优化编译时,向量应该与数组一样快。它旨在替代 DIY 动态数组。
-
我也是这么想的,我肯定会用它们,否则当我不只是卑微的实习生时;)
-
如果您不使用 STL 容器,我认为您应该将数组的大小传递给您的函数。
标签: c++ arrays struct member-functions