Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2009, 18:52   #11
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Так у базового класса результатом оператора + является объект базового класса, а C - производного. Компилятор просто не может преобразование выполнить. Добавьте конструктор копирования вида:
Код:
Chislo::Chislo(Complex const &obj)
  :Complex(obj)
{
}
Должен по идее оператор заработать, т.к. возможно будет неявное преобразование из Complex в Chislo
ЗЫ. Ну и для Complex создать лучше конструктор копии:
Код:
Complex::Complex(Complex const &obj)
{
...
}
pu4koff вне форума Ответить с цитированием
Старый 02.07.2009, 19:06   #12
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Victor Deltorro
Перегруженные операторы << и >> не могут быть функциями членами класса...
Код:
#include <iostream>

class Employee{
public:
	Employee():data(10){}
	int operator << (int i) const {
		return data << i;
	}
private:
	int data;
};
int main()
{
	Employee e;
	int i = e << 1;
	std::cout <<  i << std::endl;
}
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 02.07.2009, 19:30   #13
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

ISergeyN, в том виде, в котором ТС хочет - не получится. Только "друзьями". Не получится же реализовать вот такое при операторе-члене класса:
Код:
Employee e;
std::cout <<  e << std::endl;
pu4koff вне форума Ответить с цитированием
Старый 02.07.2009, 19:36   #14
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

pu4koff, можешь поподробнее рассказать про конструктор копии?

pu4koff, можешь пояснить, что это такое:
Код:



Chislo::Chislo(Complex const &obj)
:Complex(obj)
{
}

Последний раз редактировалось Sazary; 02.07.2009 в 21:15.
Dimarik вне форума Ответить с цитированием
Старый 02.07.2009, 19:38   #15
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

pu4koff, Я то знаю. просто Victor Deltorro сильно резко сказал что операторы << и >> не могут быть функциями членами класса....
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 02.07.2009, 20:00   #16
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Про конструкторы копии в книжках подробно написано
Код:
Chislo::Chislo(Complex const &obj)
  :Complex(obj)
{
}
Это при вызове данного конструктора, вызывается конструктор класса родителя (Complex) с параметром obj
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование z3rg Общие вопросы C/C++ 9 30.04.2009 20:43
Создание классов и использование объектов классов при написании программ в среде C++. Frozen inside Помощь студентам 0 16.04.2009 23:18
наследование методов TaTT DoGG Общие вопросы .NET 4 27.02.2009 01:27
Наследование Кирилл13 Общие вопросы C/C++ 1 11.11.2008 14:47
Классы и наследование. Scratch Общие вопросы C/C++ 9 27.09.2008 16:03