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 ạ ?

Gió viết 20:28 ngày 30/09/2018

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

Trịnh Minh Cường viết 20:29 ngày 30/09/2018

em đã sửa nhưng vẫn chưa giải quyết được vấn đề trên

Bài liên quan
0