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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2015, 14:02   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Ошибка в методе производного класса

Всем доброго дня .

Подскажите пожалуйста почему в методе производного класса

Код:
	A & operator = (const A &rhs)
при выполнении

Код:
*x = *rhs.x;
	    *y = *rhs.y;
я получаю ошибку ?

Код:
#include <stdio.h>
#include <conio.h>

class A

{

protected:

	int *x;

public:

	A() : x(new int(0)) {printf("\nKONSTRUCTOR A 1 this = %p x = %p\n",this,x);}
	A(int a) : x(new int(a)) {printf("\nKONSTRUCTOR A 2 this = %p x = %p\n",this,x);}
	A(const A &rhs) : x(new int(*rhs.x)) {printf("\nKONSTRUCTOR COPY A this = %p &rhs = %p x = %p\n",this,&rhs,x);}
	virtual ~A()  {printf("\nDESTRUCTOR A this = %p x = %p\n",this,x); delete x;}
	int fgj() const {printf("\nfgj() class A this = %p x = %p\n",this,x); return *x;}
	virtual void kac() const {printf("\nHello class A this = %p x = %p\n",this,x);}
	virtual A & operator = (const A &rhs)
	{
		printf("\noperator = class A %p %p\n",this,&rhs);
		if (this == &rhs) return *this;
		*x = *rhs.x;
		return *this;
	}

	
};

class B : public A

{

private:

	int *y;

public:

	B() : y(new int(0)) {printf("\nKONSTRUCTOR B 1 this = %p y = %p\n",this,y);}
	B(int a) : y(new int(a)) {printf("\nKONSTRUCTOR B 2 this = %p y = %p\n",this,y);}
	B(int a, int b) : A(b), y(new int(a)) {printf("\nKONSTRUCTOR B 3 this = %p y = %p\n",this,y);}
	B(const B &rhs) : A(rhs), y(new int(*rhs.y)) {printf("\nKONSTRUCTOR COPY B this = %p &rhs = %p y = %p\n",this,&rhs,y);}
	~B()  {printf("\nDESTRUCTOR B this = %p y = %p\n",this,y); delete y;}
	int fnz() const {printf("\nfnz() class B this = %p, y = %p\n",this,y); return *y;}
	void kac() const {printf("\nHello class B this = %p y = %p\n",this,y);}
	A & operator = (const A &rhs) 

	{
		printf("\noperator = class B %p %p\n",this,&rhs);
		if (this == &rhs) return *this;
		*x = *rhs.x;
	    *y = *rhs.y;
		return *this;
	}

	
};

Последний раз редактировалось RAFA91; 21.07.2015 в 14:04.
RAFA91 вне форума Ответить с цитированием
Старый 21.07.2015, 20:18   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

В классе В нет переменной y.
waleri вне форума Ответить с цитированием
Старый 21.07.2015, 20:20   #3
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Может вся проблема в:
Код:
A & operator = (const A &rhs)
Может нужно так:
Код:
 B & operator = (const B &rhs)
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 22.07.2015, 08:23   #4
Perchik71
С++, Delphi
Форумчанин
 
Аватар для Perchik71
 
Регистрация: 24.11.2012
Сообщений: 495
По умолчанию

Цитата:
Сообщение от Krasiosoft Посмотреть сообщение
Может вся проблема в:
Код:
A & operator = (const A &rhs)
Может нужно так:
Код:
 B & operator = (const B &rhs)
Именно.
В добавок, автор плодит темы.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
Perchik71 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление объекта производного класса оператором delete Trinock Общие вопросы C/C++ 12 22.09.2011 13:41
Потоковый вывод из производного класса Mike92 Общие вопросы C/C++ 11 08.05.2011 10:26
Ошибка при присвоении объекту производного класса объекта базового класса с исп. явного приведения типов Lanx Помощь студентам 0 06.04.2011 20:24
В методе TCollectionItem получить значение поля класса, содержащего TCollection Roof Общие вопросы Delphi 2 12.09.2010 01:55
Как в базовом классе описать указатель на объект производного класса? MasterGH Общие вопросы C/C++ 3 16.11.2009 02:55