-6

我有 3 个使用模板的类,以及 2 个来自抽象基类的类。在我的main()应用中,我应用了多态性概念,但是从指向基类的指针来看,派生类的对象没有被初始化。我不确定问题出在我的代码中。

#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();

}
4

2 回答 2

0

主要问题是您需要以这种方式继承模板类:

template<class T>
class rectangle : public polygon<T> // polygon is a template, you need to make
                                ^^^ // rectangle from a concrete polygon type
于 2013-05-26T07:47:57.730 回答
0

另一件事:您有 2 个矩形类的定义。一是继承自多边形,一是不继承。

于 2013-05-26T08:30:40.543 回答