Страница 1 из 3
Потомок std::ofstream, не работает манипулятор
Добавлено: 24 ноя 2015, 13:24
Сионист
Код: Выделить всё
class MyStream: public std: :o fstream
{
public:
MyStream &operator << (const char *String);
MyStream &operator << (const wchar_t *String);
};
...
MyStream f;
f.open("FileName");
f<<std::endl;// ругается на эту строку
Пишет:
D:\Projects\cpp\Test17\Test\Test.cpp|38|error: no match for 'operator<<' (operand types are 'TUTF8FileStream' and '<unresolved overloaded function type>')|
. Если оба оператора-члена убрать, то эйси. Да вот беда: класс создан ради оператора-члена с прототипом
Код: Выделить всё
MyStream &operator << (const wchar_t *String);
. Как исправить?
Re: Потомок std::ofstream, не работает манипулятор
Добавлено: 24 ноя 2015, 14:17
Absurd
Предлагаю не строить велосипедов с квадратными колесами и использовать ICU.
http://site.icu-project.org/
Re: Потомок std::ofstream, не работает манипулятор
Добавлено: 24 ноя 2015, 17:33
Сионист
И чем оно лучше? Тем более мне не нужны все кодировки. Нужны только две: utf8 и внутреннее представление типов wchar_t и wstring. И даже интерфейс выбора кодировки не предусмотрен и место ему в проекте нет.
Re: Потомок std::ofstream, не работает манипулятор
Добавлено: 24 ноя 2015, 17:37
Сионист
В вашей аналогии нужны только круглые колёса одного диаметра и стандартные звёздочки другого, но тоже одного диаметра, а не все варианты колёс, начиная с треугольных.
Re: Потомок std::ofstream, не работает манипулятор
Добавлено: 24 ноя 2015, 18:08
Absurd
Сионист писал(а):И чем оно лучше? Тем более мне не нужны все кодировки. Нужны только две: utf8 и внутреннее представление типов wchar_t и wstring. И даже интерфейс выбора кодировки не предусмотрен и место ему в проекте нет.
wchar_t и wstring - крайне косячные фичи C++. На win32 wchar_t это UTF-16, на Маке и Линуксе - UCS-32.
Re: Потомок std::ofstream, не работает манипулятор
Добавлено: 24 ноя 2015, 18:11
Absurd
Сионист писал(а):В вашей аналогии нужны только круглые колёся одного диаметра и стандартные звёздочки другого, но тоже одного диаметра, а не все варианты колёс, начиная с треугольных.
Колеса из ICU делались людьми многие из которых закончили университет по специальности "теоретические основы информатики" и отлаживались на боевых задачах более десятилетия.
Re: Потомок std::ofstream, не работает манипулятор
Добавлено: 04 дек 2015, 19:32
Сионист
Эйси. Но мне не нужны все варианты колёс начиная с треугольных. Если каждую мелочь решать такими средствами, то мне не хватит винта даже на полпроцента проекта.
Re: Потомок std::ofstream, не работает манипулятор
Добавлено: 04 дек 2015, 21:29
Romeo
А изначальная проблема всё ещё актуальна?
Re: Потомок std::ofstream, не работает манипулятор
Добавлено: 05 дек 2015, 11:30
Сионист
Уже решена.
Re: Потомок std::ofstream, не работает манипулятор
Добавлено: 05 дек 2015, 11:52
Romeo
Ну хоть бы сюда выложил то, как решил. Может кому пригодится в будущем. Нагуглят эту тему и получат профит.