Mảng 2D động trong class có thể quản lý bằng con trỏ cấp 2 (int**) hoặc mảng 1D phẳng. Ví dụ dưới dùng mảng tĩnh kích thước cố định bên trong class để minh họa nạp chồng toán tử [].
Ví dụ: Class quản lý mảng 1D (giả lập 2D)
#include <iostream>
#include <cstdlib>
using namespace std;
const int MAX_SIZE = 7;
class Arr {
int A[MAX_SIZE];
int size;
public:
Arr(int s, int initVal) {
if (s > MAX_SIZE) {
cerr << "Vượt kích thước tối đa\n";
exit(1);
}
size = s;
for (int i = 0; i < size; ++i)
A[i] = initVal;
}
int& operator[](int i) {
if (i < 0 || i >= size) {
cerr << "Lỗi: Chỉ số ngoài phạm vi\n";
exit(1);
}
return A[i];
}
};
int main() {
Arr a(7, 0);
for (int i = 0; i < 7; ++i)
a[i] = i * 10;
cout << "Phần tử mảng:\n";
for (int i = 0; i < 7; ++i)
cout << a[i] << endl;
return 0;
}
Kết quả
Phần tử mảng: 0 10 20 30 40 50 60
Mở rộng: Để làm mảng 2D động thực sự, dùng vector<vector<int>> hoặc cấp phát int** với new int*[rows] và new int[cols] cho từng hàng.