如何将struct作为函数的引用?

时间:2013-12-06 00:32:15

标签: c++ struct reference

我有以下结构:

struct pole{
    int sifra;              // sifra na artiklot
    string opis;            // opis na artiklot
    float cena;             // edinecna cena
    int vlez_kol;           // vlezna kolicina
    int izlez_kol;          // izlezna kolicina
    float dan_stapka;       // danocna stapka
    float iznos;            // iznos
    int datum;              // datum na vlez i izlez (GGMMDD)
};                          // maksimalen broj na artikli e 100

pole artikli[100];


void vlez_artikl(artikli[]){ // how to take the struct as reference?

}

我正在编写一个函数来为结构中的每个元素输入元素,但我不知道如何获取结构(通过结构我的意思是pole artikli[100]作为对函数的引用? / p>

2 个答案:

答案 0 :(得分:2)

void vlez_artikl(pole &artikli){

}

//later you can call

vlez_artikl(artikli[32]);

答案 1 :(得分:1)

我想你想传递结构数组?如果没有,那么蒂姆劳的回答是恰当的。

要使用引用,您需要知道所引用的确切类型,包括数组维度。这只能通过模板实现:

template <size_t N>
void vlez_artikl(pole (artikli&)[N]) { // take the struct[] by reference
    ....
}

由于使用模板有缺点(每个N的模板实例化,N必须在编译时知道,模板实现必须使用它暴露给翻译单元),编写使用a访问数组的函数更为常见指针(通常与数组大小并排)。以下两者都是等效的......

void vlez_artikl(pole artikli[], size_t n) ...;
void vlez_artikl(pole* artikli, size_t n) ...;