私は宿題をしていますが、私はクラステンプレートであまり好きではありません。クラステンプレートに問題があります
タスクは次のとおりです。
次のクラスの実装における主要な問題はあります。あなたはそれを見つけることができますか?どうすれば の問題を解決できますか? というクラスの要件仕様に応じて、複数のソリューションを提案できます。
template <class T>
class Array
{
private:
T *m_pData;
unsigned int m_nSize;
public:
Array(unsigned int nSize) : m_nSize(nSize)
{
if(m_nSize > 0)
m_pData = new T[m_nSize];
}
virtual ~Array()
{
if(m_pData != NULL)
delete m_pData;
}
bool Set(unsigned int nPos, const T& Value)
{
if(nPos < m_nSize)
{
m_pData[nPos] = Value;
return true;
}
else
return false;
}
T Get(unsigned int nPos)
{
if(nPos < m_nSize)
return m_pData[nPos];
else
return T();
}
};
は私に関する限りメモリリークがあります。あなたは他のいくつかの問題を見つけますか?
メモリリークはありません(デストラクタによってメモリが解放されるため)が、正しい行に沿って考えています。少なくとも3つの大きな問題があります。 –