Глобальные операторы преобразования типов
От: x-code  
Дата: 24.10.18 16:50
Оценка:
Есть проект, в котором для соединения разных библиотек во многих местах нужно провести преобразования std::wstring в QString и обратно.
Писать везде явное преобразование QString::fromStdWString и toStdWString утомительно и замусоривает код.
Попробовал тупо написать такое
QString operator=(const std::wstring &str)
{
    return QString::fromStdWString(str);
}

std::wstring operator=(const QString &str)
{
    return str.toStdWString();
}


но компилятор естественно ругается на то что оператор должен быть нестатическим.
Вопрос — а возможно ли такое сделать в принципе?
Re: Глобальные операторы преобразования типов
От: B0FEE664  
Дата: 24.10.18 18:41
Оценка:
Здравствуйте, x-code, Вы писали:

XC>Есть проект, в котором для соединения разных библиотек во многих местах нужно провести преобразования std::wstring в QString и обратно.

XC>Вопрос — а возможно ли такое сделать в принципе?

В принципе можно воспользоваться оператором <<
void operator<<(QString& string qstr, const std::wstring& str)
{
  qstr = QString::fromStdWString(str);
}

но нужно ли...

PS Бесстрашные парни правят исходники Qt
И каждый день — без права на ошибку...
Re: Глобальные операторы преобразования типов
От: ViTech  
Дата: 25.10.18 13:14
Оценка:
Здравствуйте, x-code, Вы писали:


XC>Есть проект, в котором для соединения разных библиотек во многих местах нужно провести преобразования std::wstring в QString и обратно.

XC>Писать везде явное преобразование QString::fromStdWString и toStdWString утомительно и замусоривает код.
XC>Попробовал тупо написать такое
XC> ...

Допустим, компилятор бы это собрал и можно было бы преобразовывать: QString = std::wstring и std::wstring = QString. Но, если вдруг одновременно с этим понадобятся и такие преобразования: QString = std::string и std::string = QString, то как это предполагается оформлять при использовании операторов?
Пока сам не сделаешь...
Re: Глобальные операторы преобразования типов
От: BigBoss  
Дата: 28.10.18 02:52
Оценка:
XC>Вопрос — а возможно ли такое сделать в принципе?

Если сможешь -- расскажи как

У меня в одном проекте на Qt, где было много COM, для такого сам собой получился operator~. Тот же <<, но удобнее для аргументов функций.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.