是否可以在不指定具体类型的情况下将模板传递给函数?
我有一个基类,它是一个模板及其两个不同的专业领域。这是基类的示例:
template<typename T1,typename T2> class Dataset
{
protected:
std::vector<std::pair<T1,T2> > _data_buffer;
public:
virtual void doSomething(MatrixRm& data) = 0;
}
这是扩展基类的第一类:
class InmemoryDataset : public Dataset<MatrixRm,MatrixRm>
{
public:
void doSomething(MatrixRm& data) override
{
...
}
}
这是扩展基类的第二个类:
class OnlineDataset : public Dataset<std::string,std::string>
{
public:
void doSomething(MatrixRm& data) override
{
...
}
}
现在,我想将任何此类传递给不同类别的函数或构造函数。但是我目前无法在不指定具体类型的情况下弄清楚该如何做。
这就是我的想象:
void someFunction(Dataset* dataset)
{
//do something with the specialization
}
在Visual Studio中,我收到以下错误消息:
缺少类模板“数据集”的参数列表
在我看来,为什么不允许这样做,但是有什么解决办法吗?