0

テンプレートを使用していくつかのコードを書いていますが、いくつかのリンクエラーが発生しました:

[リンカ エラー] `Vector::Vector(Vector const&)' への未定義の参照

しかし、私はこの関数を .cpp に書きました。コードは次のとおりです。

template <class T>

Vector<T>::Vector(Vector const& r)
{


m_nSize = r.size();
int i = 0;
m_pElements = new T[m_nSize];
    while(i <= m_nSize)
{
    m_pElements[i] = r[i];
    i++;
}
}

.h で宣言されています。

template <class T>

class Vector
{

public:

Vector():m_nSize(0){ m_pElements = (T*)NULL; }
Vector(int size):m_nSize(size){ m_pElements = new T[size]; }
Vector(const Vector& r);
virtual ~Vector(){ delete m_pElements; }
T& operator[](int index){ return m_pElements[index];}
int size(){return m_nSize;}
int inflate(int addSize);
private:

    T *m_pElements;
    int m_nSize;
};

私は今本当に混乱しています...修正するにはどうすればよいですか?

4

2 に答える 2

3

実装を可視化する必要があります。動く

template <class T>
Vector<T>::Vector(Vector const& r)
{
    //....
}

ファイルからcppヘッダーまで。

于 2012-05-25T08:26:41.740 に答える
2

C++ FAQ (http://www.parashift.com/c++-faq-lite/templates.html#faq-35.13) を参照してください。コードは基本的にヘッダーファイルに配置します。

于 2012-05-25T08:27:13.057 に答える