У меня есть 3 класса с использованием шаблонов и 2 из абстрактного базового класса. В моем main()
я применяю концепции полиморфизма, но из указателя в базовый класс объекты производного класса не инициализируются. Я не уверен, где проблема в моем коде.Templated polymorphism не работает
#include<iostream>
#include<conio.h>
using namespace std;
template<class T>
class polygon
{
protected:
T a,b;
public:
virtual T area()=0
}
template<class T>
class rectangle:public polygon
{
public:
rectangle(T c,T d)
{
a=c;
b=d;
}
T area()
{
return (a*b);
}
};
template<class T>
class triangle:public polygon
{
public:
rectangle(T c,T d)
{
a=c;
b=d;
}
T area()
{
return (.5*a*b);
}
};
template<class T>
class rectangle
{
public:
rectangle(T c,T d)
{
a=c;
b=d;
}
T area()
{
return (a*b);
}
};
void main (void)
{
polygon<float>*ppoly=new rectangle<float>(4,5);
cout<<ppoly->area();
getche();
}
Ваш код не должен компилироваться. Можете ли вы исправить это и объяснить, какие у вас проблемы? – juanchopanza
также основной problm является то, что от указателя базового класса он не инициализирует объект производного класса , как он обычно делает без шаблонов это имеет ничего общего с шаблонами или у меня есть некоторый problm в синтаксисе PLZZ игнорировать осуществление часть. это не моя проблема ri8 –
Не знаю, потому что код, который вы отправили, даже не компилируется. Таким образом, вы используете другой код. Как мы должны знать, что не так с кодом, который вы не показываете? – juanchopanza