01/10/2018, 00:37
Hỏi cách sử dụng class template
template <class T>
class Array
{
private:
T *m_pElement;
int m_iLength;
public:
Array(int iLength)
{
if (iLength < 0)
{
cout << "Loi: chieu dai mang la so am";
return;
}
m_iLength = iLength;
m_pElement = new T[m_iLength];
}
int GetLength()
{
return m_iLength;
}
void setArray(int elem, T val)
{
m_pElement[elem] = val;
}
T operator[](int elem)
{
return m_pElement[elem];
}
};
Main:
int main()
{
Array<int> int_array(2);
int_array.setArray(0, 3);
int_array.setArray(1, 3.4);
//int_array.getArray();
for (int i = 0; i < int_array.GetLength(); i++)
{
cout << int_array[i] << endl;
}
cout << "-------------------------" << endl;
Array<float> float_array(3);
float_array.setArray(0, 3.4);
float_array.setArray(1, 6.7);
float_array.setArray(2, 5.6);
//float_array.getArray();
for (int i = 0; i < float_array.GetLength(); i++)
{
cout << float_array[i] << endl;
}
cout << "--------------------------" << endl;
Array<char> char_array(5);
char_array.setArray(0, 'H');
char_array.setArray(1, 'E');
char_array.setArray(2, 'L');
char_array.setArray(3, 'L');
char_array.setArray(4, 'O');
//char_array.getArray();
for (int i = 0; i < char_array.GetLength(); i++)
{
cout << char_array[i] << endl;
}
cout << "--------------------------" << endl;
return 0;
}
Mọi người xem giúp em có cách nào mình đổi từ int_array.setArray(0, 3);
sang int_array[0] = 3;
được không? Cảm ơn mọi người nhiều ạ
Bài liên quan
bạn có thể viết hàm nạp chồng toán tử = ( overloading operator = ) trong class Array
mà toán tử = làm sao mình thêm cả chỉ số và giá trị vào luôn bạn, mình thấy là chỉ được bằng cái giá trị thôi mà
Trả về reference của T.
Mình thì thêm cái biến index vào + thêm gợi ý của Gió đã làm đc :v
//
Cảm ơn mọi người nhiều nha, mình làm bằng cách là thêm dấu & trước operator[]
Mọi người giúp mình với, mình đưa sang file .cpp thì bị lỗi
Array.h
Array.cpp
Main:
Array<T>::Array()
thôi bạnkhông được bạn ơi, template mình phải định nghĩa trên cùng 1 template, tách ra thì không compile được, nên mình đưa nó vào file.h luôn