30/09/2018, 18:28
Error LNK2019: unresolved external symbol
Em bị lỗi như thế này.
Đề bài: Tạo Class mảng kiểu T và thực hiện một số thao tác trên class đó.
Cho em hỏi là lỗi này là như thế nào ạ ?
đây là code ở phần khai báo file.h
template<class T>
class CTArray
{
private:
T *m_Array;
int _length;
public:
CTArray();
CTArray(const CTArray &a);
CTArray(T *Array, int Length);
void InputArray();
void OutputArray();
~CTArray();
};
đây code phần cpp
#include "TArray.h"
#include <iostream>
#include <time.h>
template class CTArray<int>;
template<class T>
CTArray<T>::CTArray()
{
_length = 0;
m_Array = new T[_length];
for (int i = 0; i < _length; i++)
{
m_Array[i] = T();
}
}
template<class T>
CTArray<T>::CTArray(const CTArray &a)
{
_length = a._length;
m_Array = new T[_length];
for (int i = 0; i < _length; i++)
{
m_Array[i] = a.m_Array[i];
}
}
template<class T>
CTArray<T>::CTArray(T *Array, int Length)
{
_length = Length;
m_Array = new T[_length];
for (int i = 0; i < _length; i++)
{
m_Array[i] = Array[i];
}
}
template<typename T>
void CTArray<T>::InputArray()
{
srand(time(NULL));
cout << "Nhap vao so phan tu cua mang: ";
cin >> _length;
m_Array = new T[_length];
for (int i = 0; i < _length; i++)
{
m_Array[i] = rand() % 100;
}
}
template<typename T>
void CTArray<T>::OutputArray()
{
for (int i = 0; i < _length; i++)
{
cout << "a[" << i << "]: " << m_Array[i] << endl;
}
}
template<class T>
CTArray<T>::~CTArray()
{
delete[] m_Array;
}
Update: đã tìm ra được cách giải quyết là thêm dòng template class CTArray<int>;
vào file .cpp
thì được cơ mà có ai có cách giải quyết khác không ạ ?
Bài liên quan
Hàm CTArray bị sai: (T * array,int length)
hàm khởi tạo: nên gán m_array[i]=T(); cho giá trị mặc định của T
em đã sửa nhưng vẫn chưa giải quyết được vấn đề trên