? posta il codice magari su pastebin o simili, così dalla tua spiegazione non si capisce molto bene... ovviamente g++ è un compilatore perfettamente conforme alle specifiche C++ per cui il problema è la tua conoscenza del C++, non il compilatore... :D
_add_
come detto, using namespace std... ok
ci sono però discrepanze: in A.h scrivi
char *toString();
mentre in A.cpp hai
string A::toString() { ... }
e questo già ti è stato corretto, ma mi chiedo quale fosse la reale intenzione: tornare un stringa "C" o un oggetto stringa?
nel primo caso, char *, devi allocare la memoria e copiarci dentro la rappresentazione in "char" dell'oggetto (credo che questo sia il senso di toString ...), non ti dimenticare lo '\0' finale.
nel secondo caso dovrebbe andare
return string("testo");
(cfr. fonti)
;;;
infine l'inizializzazione delle stringhe è meglio scriverla come
string nome("testo");
invece che
string nome = "testo";
che sono due cose diverse, la seconda è più, per così dire, laboriosa.