比方说,我有一个基类模板MyBase:子类有不同的阵列实现
template <class T>
class MyBase{
private:
T data;
public:
MyBase(T _data);
};
我想(至少目前如此)两次此类子:
- 数据应该是一个动态的2维数组:
T **data
- 数据应该是一个固定的2维数组:
T data[rows][cols]
我仍然是一个C++新手,我不知道如何做到这一点。 具体来说,我想制作一种矩阵库(主要是作为一个学习项目)。过去我做过一些事情,我的矩阵动态存储更有意义,反之亦然。所以,看起来好的解决方案是实现一个提供所有常用功能的基类(例如insert(T item, int i, int j)
,无论在哪种情况下都应该使用data[i][j] = item;
),然后继承DynamicMatrix和FixedMatrix。该DynamicMatrix将有一个构造函数,没有
data = new T*[rows];
for (int i = 0; i < rows; i++)
{
data[i] = new T[cols];
}
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
data[i][j] = 0;
}
}
而且FixedMatrix刚:
for (i=0; i < rows; i++)
{
for (j=0; j < cols; j++)
{
data[i][j] = 0;
}
}
在基类中创建一个成员变量T data;
是很容易的。但是,在子类中,我该如何将它转换为双指针?也许我做不到,我没关系。但是,我应该怎么做呢?
你能详细解释一下这个基类代表什么,你为什么要在这里使用继承,以及你有什么麻烦? – templatetypedef 2011-02-10 05:43:43
当然,让我编辑这个问题。 – jakev 2011-02-10 05:44:49