У меня есть исходный файл MFC, который мне нужно скомпилировать в Qt. Этот файл использует MFC / ATL CString. В частности, он использует CString в качестве аргумента для iostream :: open (). Я написал класс CString, который наследуется от QString, так что я могу использовать большинство функций QStrings.
Моя главная проблема в том, что я не могу заставить мою реализацию CString работать там, где вызывается iostream :: open ():
Вот немного моего объявления класса:
class CString : public QString {
public:
CString() : QString() {}
CString(const QString& other) : QString(other) {}
CString(const CString& other) : QString(other) {}
CString(_In_opt_z_ const XCHAR* pszSrc) : QString( pszSrc ) { *this = pszSrc; }
CString(const char* pszSrc) : QString( pszSrc ) {}
...
}
И вот часть кода для использования CString:
ofstream outfile;
CString Path("dump.txt");
outfile.open(Path);
Ошибка:
нет соответствующей функции для вызова 'std :: basic_ofstream> :: open (CString &)'
При «нормальных» обстоятельствах я бы просто сделал что-то вроде:
outfile.open(Path.toStdString().c_str());
Однако это не вариант. Не допускается изменение исходного кода. (
Есть ли способ сделать это, или мне придется перестраивать класс, используя тот же, более сложный и длинный код, который Microsoft использует в cstringt.h?
Спасибо