0 / 0 / 1
Регистрация: 01.04.2015
Сообщений: 5
|
|||||||||||
1 | |||||||||||
Перегрузка оператора <<09.12.2015, 03:15. Показов 1061. Ответов 3
Метки нет (Все метки)
Здравствуйте форумчане, помогите исправить ошибку.
Вообщем есть класс с перегруженным оператором << . Category.h Кликните здесь для просмотра всего текста
Category.cpp Кликните здесь для просмотра всего текста
Когда есть мой конструктор с одним входным параметром выдает такую ошибку Ошибка Кликните здесь для просмотра всего текста
1 IntelliSense: more than one operator "<<" matches these operands: function "operator<<(std::ofstream &out, Category categoryObj)" function template "std::basic_ostream<_Elem, _Traits> &std::operator<<(std::basic_ostream<_Elem, _Traits> &_Ostr, const std::basic_string<_Elem, _Traits, _Alloc> &_Str)" operand types are: std::ofstream << std::string c:\Users\Vlad\Documents\Visual Studio 2012\Projects\CourseProject\CourseProject\Category.cpp 21 6 CourseProject Если же убрать пользовательский конструктор Category(string _categoryName), ошибка исчезает. Подскажите в чем проблема, заранее спасибо.
0
|
09.12.2015, 03:15 | |
Ответы с готовыми решениями:
3
Перегрузка оператора << Перегрузка оператора Перегрузка оператора << Перегрузка оператора = |
2782 / 1935 / 570
Регистрация: 05.06.2014
Сообщений: 5,600
|
|
09.12.2015, 03:57 | 2 |
Сообщение было отмечено vlad_exp как решение
Решение
В том что конструктор с одним параметром трактуется как оператор преобразования этого параметра в Category. Далее компилятор думает "так мне создавать временный объект Category или параметр как есть печатать?".
Или explicit в начало объявления конструктора.
1
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
|
09.12.2015, 04:28 | 3 |
- надо ostream
- надо istream Ну и перед стандартными именами надо ставить std::
0
|
0 / 0 / 1
Регистрация: 01.04.2015
Сообщений: 5
|
|
09.12.2015, 11:25 [ТС] | 4 |
Благодарю, explicit то, что нужно.
0
|
09.12.2015, 11:25 | |
09.12.2015, 11:25 | |
Помогаю со студенческими работами здесь
4
Перегрузка оператора = Перегрузка оператора << Перегрузка оператора Перегрузка оператора [] Перегрузка оператора [] Перегрузка оператора << Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |