比方說,我有一個基類模板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