Мне интересно, как я могу передать динамически выделенный массив структур из основной функции в функцию-член класса. Мне не обязательно менять значения в функции-члена, просто распечатайте его.Как передать динамический массив структур в функцию-член?
Если я делаю это как я бы с целым массивом в следующем фрагменте кода, я получаю, что MyStruct
не определен в файлах MyClass.h
и MyClass.cpp
. (Что имеет смысл)
Если я включаю main.cpp
в MyClass.h
Получаю много странных ошибок. Другая идея заключалась в добавлении 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;
// ...
}
Почему вы не можете использовать стандартные контейнеры? – NathanOliver
Потому что это может быть в цикле, продолжающемся миллионы раз, и кто-то настаивает на том, что контейнеры STL слишком медленны для наших требований к производительности. Я не могу прокомментировать это, так как я только стажер. Если это слишком сложно, я использую контейнер STL. –
Я гонг, чтобы позвонить в BS на тех, кто вам это сказал. Вектор должен быть таким же быстрым, как массив при компиляции с оптимизацией. Он был построен для замены динамических массивов DIY. – NathanOliver