Я написал базовую функцию get, которая принимает элементы структуры и копирует/сохраняет их в отдельные переменные. Я хочу сделать то же самое, за исключением того, чтобы хранить массив структур в переменных массива (главное, что я хочу использовать функцию get, которую я уже написал). Я легко могу сделать то, что хочу, не встраивая свою первую функцию, но мне нужно использовать мою первую функцию во втором, и у меня есть некоторые проблемы.
Одна из моих ошибок заключается в том, что во встроенной функции get нет встроенного метода get, который я вставлял в свою вторую функцию (я думал, что правильно сопоставил переменные с моей первой функцией get (т.е. n, c, a и Икс)).
Спасибо, что посмотрели.
#include <iostream>
#include <cstdlib>
using namespace std;
struct ABC
{
int n;
char c;
double a[3];
};
void get( int & n, char & c, double a[3], const ABC & x )
{
n = x.n;
c = x.c;
for (int i = 0; i < 3; i++){
a[i] = x.a[i];
}
}
void get( int n[], char c[], double a[][3], const ABC x[], int elements )
{
for (int i = 0; i < elements; i++){
get(n, c, a, x);
}
}
int main()
{
ABC x = {number, m, {1, 2, 3}};
ABC xx[4] = {
{123, 'A', {1.1, 1.2, 1.3}},
{234, 'B', {2.1, 2.2, 2.3}},
{345, 'C', {3.1, 3.2, 3.3}},
{456, 'D', {4.1, 4.2, 4.3}}
};
int n;
char c;
int a[] = {};
int n1 [4] = {};
char c1 [4] = {};
double a3 [4] [3] = {};
int elements = 3;
get(n1, c1, a3, xx, elements);
return 0;
}
Вы, наверное, хотели сказать
get(n[i], c[i], a[i], x[i]);
Это не отвечает на вашу XY-проблему, хотя
"фиксированный" код (для компиляции) Live On Coliru
Мне кажется, что в ваших функциях get с массивами вы всегда сохраняете значения в одном и том же месте в каждом массиве. Вероятно, вы должны сделать что-то вроде:
get (n [i], c [i], a [i], x [i]);