ti eviti tutti i std::Originariamente inviato da FinalFantasy
andato ot, ma nn mi importa...a ke cosa giova questo name space ke nn cambia nulla nei miei programmi?
il problema è che se indichi using namespace std allora vai a creare ambiguita fra il tuo typedef string e string all'interno del namespace std.
Il tuo programma originale, se nn includi <string> nè il namespace e correggi la parentesi funziona.
Se usi il namespace devi o indicare esplicitamente che string si riferisce al typedef (cosi ::string) o fare come ha indicato mods, cioè cambiando nome al typedef