模板化多态性不起作用
Templated polymorphism is not working
我有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();
}
主要问题是你需要这样继承模板类:
template<class T>
class rectangle : public polygon<T> // polygon is a template, you need to make
^^^ // rectangle from a concrete polygon type
另一件事:你有两个矩形类的定义。一个是继承自多边形,另一个不是。
相关文章:
- C++17 多态记忆资源不起作用
- C++ 多态性在代码::块 17.12 中不起作用
- 无法初始化已知大小的矢量指针,该大小不会因多态性而更改
- 任务计划程序库的预处理不起作用 - 多定义错误
- C++矢量 - 放置/擦除不起作用?(多态性)
- 使用字符串时不能重写多态性
- 多态性在 lambda 函数C++不起作用
- C++多态性为什么这不起作用?
- C++多态性/虚拟函数在此不起作用
- 多态性测试不起作用
- 如果重载函数仅被部分重写,则多态性不起作用
- 为什么说C++不支持参数多态性
- 为什么这C++多态性不起作用
- 为什么AbstractFactoryUnit具有动态多态性而不是静态多态性
- 异常处理+多态性,如果异常方法在同一类中不起作用,则不起作用
- 简单多态性投射不起作用
- 为什么不能将多态性与值一起使用,而是引用和指针
- 模板化多态性不起作用
- 两级层次类中的C++多态性:不明白为什么它不起作用
- 为什么多态性在这种情况下不起作用