Hmm, ich kann das nicht testen, aber die Deklaration ist nur einmal drin. Vielleicht wird der header mehrfach eingebunden?

Kennst du diesen Trick bei C/C++ header, wo man zu Beginn schreibt
Code:
#ifndef GROVE_H
#define GROVE_H
und am Schluss
Code:
#endif //GROVE_H
Alles zwischen #ifndef und #endif macht er nur, wenn die Variable GROVE_H noch nicht gesetzt wurde. Dann setzt er sie zuerst, bindet den Rest vom header ein und beim nächsten mal wird er dann von #ifndef abgewiesen.