使用模板时是否可以使用 PolyMorphism?
例如,我有一个名为“过滤器”的类,我有许多不同的数据过滤方式/类,因此我根据模板初始化一个对象(主要定义了哪种类型的过滤器)
#include "Filter1.h"
#include "Filter2.h"
template<typename T>
class Filters {
public:
void Filter(vector<double> &vec) {
T type;
type.Filter(vec);
}
};
// class Filter1
class Filter1 {
public:
void Filter(vector<double> &vec) {
// Code for "Filter1"
}
};
// MAIN
int main() {
vector<double> sample; // this is a sample vector
Filters<Filter1> exam1;
exam1.filter(sample);
}
但是,这会起作用,在“Filter2”中,假设我们传递了更多参数:
class Filter2 {
public:
void Filter(vector<double> &vec, double point)
{
// Filter 2
}
};
然后是主要的:
int main()
{
vector<double> sample;
double point = 9;
Filters<Filter2> exam;
exam.Filter(sample, point);
}
这是行不通的,因为“过滤器”中的“过滤器”只接受 1 个参数。
我遇到的问题是过滤器接受的参数不同。例如,“Filter1”通过一个 2D 向量和一个 double 但此类中的 Filter 方法定义只接受一个 1D 向量。
我在想(理论上)我可以有一个 switch 语句(“T”)来提供初始化不同的类。
任何想法,将不胜感激 。