De retour ifstream dans une fonction

Voici sans doute un très noobish question pour vous: Comment (si possible) puis-je retourner un ifstream à partir d'une fonction?

En gros, j'ai besoin d'obtenir le nom de fichier d'une base de données de l'utilisateur, et si la base de données avec le nom de fichier n'existe pas, alors j'ai besoin de créer ce fichier pour l'utilisateur. Je sais comment le faire, mais seulement en demandant à l'utilisateur de redémarrer le programme après avoir créé le fichier. Je voulais éviter que des inconvénients pour l'utilisateur, si possible, mais la fonction ci-dessous n'est pas compilé avec gcc:

ifstream getFile() {
    string fileName;
    cout << "Please enter in the name of the file you'd like to open: ";
    cin >> fileName;
    ifstream first(fileName.c_str());
    if(first.fail()) {
        cout << "File " << fileName << " not found.\n";
        first.close();
        ofstream second(fileName.c_str());
        cout << "File created.\n";
        second.close();
        ifstream third(fileName.c_str());
        return third; //compiler error here
    }
    else
        return first;
}

EDIT: désolé, j'ai oublié de vous dire où et ce que l'erreur de compilation est:

main.cpp:45: note: synthesized method std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(const std::basic_ifstream<char, std::char_traits<char> >&)’ first required here 

EDIT: j'ai modifié la fonction de renvoyer un pointeur plutôt que Remus a suggéré, et modifié la ligne dans main () "ifstream base de données = *getFile()"; maintenant j'ai cette erreur à nouveau, mais cette fois dans la ligne dans le main():

main.cpp:27: note: synthesized method std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(const std::basic_ifstream<char, std::char_traits<char> >&)’ first required here
Ce que vous avez listé n'est pas une erreur de compilation, c'est une "note". Regardez l'erreur réelle.

OriginalL'auteur wrongusername | 2010-03-08