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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2011, 15:51   #1
Skender
Пользователь
 
Регистрация: 27.08.2011
Сообщений: 21
По умолчанию Одиночное наследование классов

Создать класс кнопка, имеющий размер. Определить конструкторы и метод доступа.
Создать класс окно, содержащий класс кнопка. Дополнительно есть координаты окна.
Определить конструкторы и деструктор. Определить public- производный класс окно с
кнопкой и имеющее меню (указатель на строку). Определить конструкторы, деструкторы
и функцию печати

Помогите разобраться не пойму как сделать здесь одиночное наследование
Skender вне форума Ответить с цитированием
Старый 02.09.2011, 16:00   #2
Jakethefish
Форумчанин
 
Регистрация: 13.11.2009
Сообщений: 121
По умолчанию

class Button{ ... }
class Window { Button button; ... }
class AnotherWindow extends Window{ String menu; ...}
Как-то так.
Jakethefish вне форума Ответить с цитированием
Старый 03.09.2011, 00:00   #3
Skender
Пользователь
 
Регистрация: 27.08.2011
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Jakethefish Посмотреть сообщение
class Button{ ... }
class Window { Button button; ... }
class AnotherWindow extends Window{ String menu; ...}
Как-то так.
АМММ пардон мне как бы на С++ надо
Skender вне форума Ответить с цитированием
Старый 03.09.2011, 00:11   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
class Button
{

};

class Window
{
    Button button;
};

class AnotherWindow:public Window
{
    std::string menu;
};
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.09.2011, 13:21   #5
Skender
Пользователь
 
Регистрация: 27.08.2011
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
Код:
class Button
{

};

class Window
{
    Button button;
};

class AnotherWindow:public Window
{
    std::string menu;
};
извените за наглость а можно по подробнее классы прописать
Skender вне форума Ответить с цитированием
Старый 03.09.2011, 14:17   #6
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Цитата:
Сообщение от Skender Посмотреть сообщение
извените за наглость а можно по подробнее классы прописать
Код:
class Button
{
protected:
  int x, y;
  int height, width;
public:
  void Press(void);
};
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 03.09.2011, 23:38   #7
Skender
Пользователь
 
Регистрация: 27.08.2011
Сообщений: 21
По умолчанию

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class Button
{
protected :
int itsWeigth;
int itsHeigth;
public:
Button(int weigth,int heigth){itsWeigth=weigth;itsHeigth= heigth;}
~Button(){};
};
class window
{
protected:
int winWeigth;
int winHeigth;
public:
Button button;
window(int WINweigth,int WINheigth,int weigth,int heigth):button(weigth,heigth){winWe igth=WINweigth;winHeigth=WINheigth; }
~window(){};
};
class button_and_windowublic window
{
protected:
char *menu;
public:
button_and_window(char*m,int WINweigth,int WINheigth,int weigth,int heigth):window(WINweigth,WINheigth, weigth,heigth){menu=m;}
~button_and_window(){};
void print()const;
};
void button_and_window:rint()const
{
cout<<menu<<endl;
for (int i=0;i<winHeigth;i++)
{
if ((i==0)||(i==winHeigth-1))
{
for (int j=0;j<winWeigth;j++)
{
cout<<"*";
}
cout<<endl;
for(int i=0;i<itsHeigth;i++)
{
for(int j=0;j<itsWeigth;j++)
{
cout<<"*";
}
cout<<endl;
}
}
else
{
cout<<"*"<<setw(winWeigth-1)<<"*"<<endl;
}
}
cout<<endl;
}
int main()
{
button_and_window C("MENU",15,15,3,3);
C.print();
return 0;
}
не могу сделать так чтоб еще кнопка выводилась ((((
если что не так критике буду рад !!
Skender вне форума Ответить с цитированием
Старый 07.09.2011, 16:57   #8
Skender
Пользователь
 
Регистрация: 27.08.2011
Сообщений: 21
По умолчанию Ошибка работы с памятью

Имееться код все работает правильно , но программа падает при выполнении деструктора подскажите в чем ошибка
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
typedef double DB;
class system_unit
{
protected:
DB price;
char *name;
public:
system_unit(char*N,DB PRICE);
~system_unit(){delete []name;}
system_unit(system_unit &brand);
void SetPrice(DB PRICE){price=PRICE;}
int get(){return strlen(name);}
DB GetPrice()const{return price;}
void print(){cout<<name<<endl;};
};
system_unit::system_unit(char *N,DB PRICE)
{
int size=strlen(N);
name=new char[size];
if (name==NULL)
{
cout<<"Memory blocked\n";
exit(1);
}
strcpy(name,N);
price=PRICE;
}
system_unit::system_unit(system_uni t &brand)
{
name=new char [brand.get()];
if (name==NULL)
{
cout<<"Memory blocked\n";
exit(1);
}
strcpy(name,brand.name);

}
int main()
{
system_unit C("SAMSUNG",250.500);
C.print();
cout<<C.GetPrice()<<endl;
system_unit B(C);
B.print();
return 0;
}
Skender вне форума Ответить с цитированием
Старый 08.09.2011, 21:12   #9
Ak1ra
 
Аватар для Ak1ra
 
Регистрация: 19.02.2009
Сообщений: 9
По умолчанию

Когда работаешь со строками, нужно выделять память для завершающего элемента '\0' в конце строки, т. е. на один символ больше, чем выделяешь ты в конструкторах:

Код:
system_unit::system_unit (char *N, DB PRICE)
{
	// я бы ещё добавил в самое начало проверку if (N),
	а потом бы уже выполнял strlen и выделял память
	int size=strlen (N);
	name=new char [size+1];
и
Код:
system_unit::system_unit (const system_unit &brand)
{
	name=new char [brand.get ()+1];
	if (name==NULL)
	{
		cout << "Memory blocked\n";
		return;
	}
	strcpy (name, brand.name);
	price=brand.price; // у тебя этого нету, а надо.
}
После этого будет работать. И ещё одна поправка:
Код:
int get () { if (name) return strlen (name); else return 0; }

Последний раз редактировалось Ak1ra; 08.09.2011 в 21:16.
Ak1ra вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание и наследование классов в С# Pavellavr Помощь студентам 2 25.03.2011 20:37
Наследование классов Serjuk Общие вопросы C/C++ 9 11.04.2010 16:25
наследование классов Dimarik Общие вопросы C/C++ 15 02.07.2009 20:00
Одиночное наследование Виртуальные функции Brunette Помощь студентам 3 08.05.2008 19:23