Временные std :: строки, возвращающие мусор

Я все еще изучаю с ++, поэтому, пожалуйста, потерпите меня. Я пишу простую оболочку для путей ускорения файловой системы - у меня возникают странные проблемы с возвратом временных строк. Вот мой простой класс (это не точно, но довольно близко):

typedef const char* CString;
typedef std::string String;
typedef boost::filesystem::path Path;

class FileReference {

    public:

        FileReference(const char* path) : mPath(path) {};

        // returns a path
        String  path() const {
            return mPath.string();
        };

        // returns a path a c string
        CString c_str() const {
            return mPath.string().c_str();
        };

    private:

        Path    mPath;

}

С небольшим тестовым кодом ниже:

FileReference file("c:\\test.txt");

OutputDebugString(file.path().c_str()); // returns correctly c:\test.txt
OutputDebugString(file.c_str());        // returns junk (ie îþîþîþîþîþîþîþîþîþîþî.....)

Я почти уверен, что это имеет отношение к временным файлам, но я не могу понять, почему это было бы - не все ли правильно копировать?

Ответы на вопрос(3)

Ваш ответ на вопрос