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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 15:18   #1
3AKPbIBAKA
Новичок
Джуниор
 
Регистрация: 24.11.2010
Сообщений: 2
По умолчанию Наследование в С++

Здравствуйте!
Код:
#include <iostream>
using namespace std;
class exp{
	public:
		virtual exp* diff()=0;
		virtual void print()=0;
};
class numb:public exp{
		int val;
public:	numb(int a){val=a;}
		exp* diff(){
			exp* A=new numb(0);
			return A;
		}
		void print(){cout<<val;}
};

class var:public exp{
		char x;
public:	var(char c){x=c;}
		exp* diff(){
			exp* A=new numb(1);
			return A;
		}
		void print(){cout<<x;}
};
class add:public exp{
		exp* val1;exp* val2;
public:	add(exp* a,exp* b){val1=a;val2=b;}
		exp* diff(){
			exp* A=new add (val1->diff(),val2->diff());
			return A;
		}
		void print(){
			cout<<"(";
			val1->print();
			cout<<")+(";
			val2->print();
			cout<<")";
		}
};

class sub:public exp{
	exp* val1;exp* val2;
public:	sub(exp* a,exp* b){val1=a;val2=b;}
		exp* diff(){
			exp* A=new sub (val1->diff(),val2->diff());
			return A;
		}
		void print(){
			cout<<"(";
			val1->print();
			cout<<")-(";
			val2->print();
			cout<<")";
		}
};

class mul:public exp{
	exp* val1;exp* val2;
public:	mul(exp* a,exp* b){val1=a;val2=b;}
		exp* diff(){
			exp* A=new add (&mul(val1->diff(),val2),&mul(val2->diff(),val1));
			return A;
		}
		void print(){
			cout<<"(";
			val1->print();	
			cout<<")*(";
			val2->print();
			cout<<")";
		}
};

class divo:public exp{
exp* val1;exp* val2;
public:	divo(exp* a,exp* b){val1=a;val2=b;}
		exp* diff(){
			exp* A=new divo( &divo( &sub((val1->diff(),val2),&mul(val2->diff(),val1) ), val2 ) , val2);
			return A;
		}
		void print(){
			cout<<"(";
			val1->print();	
			cout<<")/(";
			val2->print();
			cout<<")";
		}
};
class sinus;
class cosus:public exp{
exp* val;
public:	cosus(exp* a){val=a;}
		exp* diff(){
			exp* A=new mul(&sinus( val),val->diff());
			return A;
		}
		void print(){
			cout<<"cos(";
			val->print();
			cout<<")";
		}
};
class sinus:public exp{
exp* val;
public:	sinus(exp* a){val=a;}
		exp* diff(){
			exp* A=new mul(&cosus( val),val->diff());
			return A;
		}
		void print(){
			cout<<"sin(";
			val->print();
			cout<<")";
		}
};
class tg:public exp{
	exp* val;
public:	tg(exp* a){val=a;}
		exp* diff(){
			exp* A=new mul(&divo(&sinus(val),&cosus( val)),val->diff());
			return A;
		}
		void print(){
			cout<<"tg(";
			val->print();
			cout<<")";
		}
};

void main(){
exp *e = new add(new numb(1), new var('x'));
std::cout << "\n";
exp *de = e->diff();
de->print();
cout << "\n";
int o;
cin>>o;
delete e;
delete de;
}
Выдает ошибку
Код:
Error	1	error C2440: '<function-style-cast>' : cannot convert from 'exp *' to 'sinus'
Подскажите, пожалуйста, в чем дело.
3AKPbIBAKA вне форума Ответить с цитированием
Старый 24.11.2010, 15:36   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
...
class sinus;
...
class sinus:public exp{
...
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 24.11.2010, 15:36   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
...
class sinus;
...
class sinus:public exp{
...
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 24.11.2010, 16:38   #4
3AKPbIBAKA
Новичок
Джуниор
 
Регистрация: 24.11.2010
Сообщений: 2
По умолчанию

А как правильно объявить такой класс? Если написать так
Код:
...
class sinus:public exp;
...
class sinus:public exp{
...
то появляются ошибки

Последний раз редактировалось 3AKPbIBAKA; 24.11.2010 в 16:41.
3AKPbIBAKA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование lolopolosko Помощь студентам 1 21.11.2009 17:17
Наследование на C++ dziga1989 Помощь студентам 5 22.10.2009 11:25
Наследование alex_triton Общие вопросы C/C++ 0 19.10.2009 20:25
Наследование beregok Общие вопросы C/C++ 1 04.07.2009 22:39
Наследование z3rg Общие вопросы C/C++ 9 30.04.2009 20:43