Eh però mettere
struttura in f.d. sullo spazio globale è la stessa cosa di dichiararla completamente (più o meno, ad esempio se ha dati di tipi noti sul globale). Scavando tra quel poco di C++ che ricordo (e che ho imparato nel periodo che ho trascorso in un ITIS, quindi non è che sia "chissà cosa"), credo che la cosa migliore sia mettere la dichiarazione della struttura e la firma della funzione in un header.
Tieni presente che se in un .cpp avrai bisogno di utilizzare
struttura_function, questo avverrà chiamandola su un oggetto di tipo
struttura, che dovrà in qualche modo essere già stato definito
1; supponendo però che l'implementazione di
struttura_function necessiti di far ricorso ad un numero imprecisato di headres esterni (pensa semplicemente agli algoritmi di STL) completamente inutili nel resto del codice, con l'importazione di
struttura.hpp risolvi il problema una volta per tutte, ché l'implementazione rimane isolata sul .cpp di implementazione. Ah probabilmente a distanza di due anni e mezzo dall'ultima volta che ho pensato a ciò, ho usato in modo casuale alcuni termini tecnici, spero sia chiaro lo stesso
![:-D](./images/smilies/003.gif)
(struttura.hpp)
- Codice:
#ifndef __STRUTTURA__
#define __STRUTTURA__
struct struttura {
// dati
};
void struttura_function(char a[N], char b[N], struttura &variabile, int index); /* perché usi un puntatore e non &? e char[] al posto di std::vector<char> o (che credo sia il tuo caso) std::string? (ricordo che fanno risparmiare tante bestemmie) */
#endif
(struttura.cpp)
- Codice:
#include "struttura.hpp"
void struttura_function(char a[N], char b[N], struttura &variabile, int index) {
// cose
}