Non ho idea del perchè il compilatore dia un errore su un array di puntatori (dinamico).

Praticamente dichiaro questa variabile (puntatore ad array di puntatori ad una struct):
codice:
struct struct_albero_nodo ***queue;
inizio ad allocare il primo spazio di memoria per quest'array facendo:

codice:
queue = (struct struct_albero_nodo *)calloc(1,sizeof(struct struct_albero_nodo *));
cosi ora posso inserire il primo elemento

queue[0] = (puntatore ad una struct definita in precedenza).
Bene a questo punto sorge il problema.

se provo ad accedere ai campi all'interno della struct il compilatore da errore..
codice:
queue[0]->data;
"error C2223: l'elemento a sinistra di '->data' deve puntare a struct/union"

per ovviare a questo problema devo definire un puntatore semplice alla struct e accedrvi tramite esso:
codice:
struct struct_albero_nodo *current;

current=queue[0];
current->data;
cosi facendo funziona normalmente..
spiegazioni?

semplicemente un altro limite del c?
thx