fila – Por que o valor dessa variavel se modifica sem eu modifica-la?

#include <iostream>
#include <string>
using namespace std;

const int Max_N = 3;

struct Fila
{
    int elem(Max_N);
    int inicio;
    int fim;
};


void constroi(Fila &F)
{
    F.inicio = 0;
    F.fim = 0;
}

void enfilera(Fila &F)
{
    int i;
    i = (F.fim%Max_N) + 1;
    if (F.inicio != i)
    {
        F.fim = i;
        F.elem(F.fim) = 10;
        if (F.inicio == 0)
        {
            F.inicio = 1;
        }
    }
    else
        {
            cout << "Fila Cheia"<<endl;
            return;
        }


}

int main()
{
    Fila F1;

    constroi(F1);

    enfilera(F1);
    enfilera(F1);
    enfilera(F1);


    return 0;
}

Estou criando uma fila circular, entretanto no corpo da função enfilera( que seria para inserir valores na fila) após a fila ficar cheia a variável F.inicio recebe o valor do F.elem(F.fim), pq isso ocorre? quando eu troco o F.elem para um vetor do tipo char, isso não ocorre mais…