C ++:我想将struct中的数据复制/存储到单个数组中

时间:2014-02-23 21:31:37

标签: c++ arrays struct

我编写了一个基本的get函数,它接受结构的元素,并将它们复制/存储到单独的变量中。我想做同样的事情,除了将结构数组存储到数组变量中(关键是我想使用我已经编写的get函数)。如果不嵌入我的第一个函数,我可以很容易地做我想做的事情,但我需要在第二个函数中使用我的第一个函数,并且遇到了一些问题。

我的一个错误是嵌入式get函数中没有匹配的函数调用我放在第二个函数中(我认为我将变量与我的第一个get函数正确匹配(即n,c, a,和x))。

感谢您的光临。

#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; 
} 

2 个答案:

答案 0 :(得分:1)

你可能想说

get(n[i], c[i], a[i], x[i]); 

虽然

,但这并没有回答你的XY问题

“修复”代码(编译) Live On Coliru

答案 1 :(得分:1)

在我看来,在使用数组的get函数中,您总是将值存储在每个数组的相同位置。 你应该做的事情可能是:

get(n [i],c [i],a [i],x [i]);