我有功课要做,但我对类模板不太熟悉。

任务是:


    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();
  }
};

就我而言,内存泄漏。您还发现其他问题吗?提示比精确答案更受欢迎;)

最佳答案

  • 构造函数-如果nSize为0,则需要设置m_pData的值
  • 您可以删除空指针,以便在析构函数中不需要if语句。删除应为delete []
  • 关于c++ - 类模板问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7067792/

    10-11 18:29