【发布时间】:2015-01-24 19:27:42
【问题描述】:
template<typename T>
struct cell
{
cell(T row,T column)
{
cellid = std::make_pair<T, T>(row, column);
}
std::pair<T, T> getcellid();
private:
std::pair<T, T> cellid;
};
现在,我有一个派生自 cell<T> 的矩阵类。
这行得通:
template<typename T>
class matrix : public cell<T>
{
};
这不起作用:
class matrix : public cell<T>
// Error: T does not name a type
这是可以理解的。
方法 1 的缺点是,matrix 类现在可以使用模板参数 T,这在本用例中不会发生。
有没有一种方法可以阻止matrix 类访问模板参数,同时仍然能够从类cell 派生。
【问题讨论】:
-
这毫无意义,编译器怎么知道 T 是什么?你想要
class matrix:public cell<double>吗?或class matrix:public cell<int>? ... -
为什么不希望
matrix访问T? -
矩阵可以由包含浮点/整数值的单元格组成...想法是让单元格处理该信息。
-
@basav 那么
matrix必须是一个模板。否则您将不知道您希望单元格是什么类型。 -
有道理。我会继续。
标签: c++ templates inheritance