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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2010, 20:23   #1
zhenya.ya
Форумчанин
 
Регистрация: 29.11.2009
Сообщений: 142
Сообщение абстрактный класс С++

Проблемы с переменной "n". Нельзя же для каждого из производных классов вводить в отдельности значение "n". Как правильно задавать значение "n", чтобы оно было видно во всех производных классах?
Код:
class base
{
public:
	int n;
	base(){ n=0;}
	virtual ~base(){}
	virtual void AddDate()=0;
	virtual void print()=0;
	void WeightSort(); 
};
class first:public base
{
public:
	first(){naznachenie=NULL; weight=NULL;}
	virtual ~first();
	void AddDate();
	void print()
	{
		for(int i=0;i<n;i++)
		cout<<"naznachenie: "<<naznachenie[i]<<"; weight: "<<weight[i]<<endl;
	}
private:
	char **naznachenie;
	char *weight;
};
class second:public base
{
public:
	second(){adress=0;}
	virtual ~second();
	 void AddDate();
	void print(){
		for(int i=0;i<n;i++)
			cout<<"name: "<<name[i]<<"; adress:"<<adress[i]<<endl;}
private:
	char **name;
	char *adress;
};

	void first::AddDate()
{
	cout<<" how match:?"<<endl;
	cin>>n;
	char str[33];
	naznachenie = new char*[n];
	weight = new char[n];
	for(int i=0;i<n;i++)
	{
		cout<<"input naznachenie:"<<endl;
		cin>>str;
		naznachenie[i] = new char [strlen(str)+1];
		strcpy(naznachenie[i],str);
		cout<<"input weight:"<<endl;
		cin>>weight[i];
	}
}
void second::AddDate()
{
	char str1[33];
	name = new char*[n];
	for(int i=0;i<n;i++)
	{
		cout<<"input name:"<<endl;
		cin>>str1;
		name[i] = new char [strlen(str1)+1];
		strcpy(name[i],str1);
		cout<<"input adress"<<endl;
		cin>>adress[i];
	}
}
first::~first()
{
        for (int i = 0; i < n; i++)
         delete[] naznachenie[i];
        delete[] naznachenie;
        delete[] weight;
}
second::~second()
{
        for (int i = 0; i < n; i++)
        delete []name[i];
		delete []name;
		delete []adress;
}

void main()
{
	base *p;
       first fst;
	   second snd;

	   p=&fst;
	   p->AddDate();
	   p->print();
  
	   p = &snd;
	   p->AddDate();
	   p->print();
	   system("PAUSE");
}
zhenya.ya вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Абстрактный виртуальный деструктор в базовом классе. Oleg_SK Общие вопросы C/C++ 16 15.06.2010 20:38
Классы(абстрактный и наследование) Пепел Феникса Общие вопросы C/C++ 6 02.11.2009 01:18
Класс Юлёк Фриланс 6 15.06.2008 15:00
Наследование: абстрактный класс zak Общие вопросы C/C++ 4 22.12.2007 13:49