Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- template <typename Type>
- class Array2D
- {
- protected:
- Type ** pointer;
- unsigned int sizeY;
- unsigned int sizeX;
- public:
- class ProxyObject {
- Type * proxyPointer;
- public:
- ProxyObject(Type * pointer) : proxyPointer(pointer) {}
- Type & operator[](int index) {
- return proxyPointer[index];
- }
- };
- ProxyObject operator[](int index)
- {
- return ProxyObject(pointer[index]);
- }
- Array2D operator=(const Array2D New)
- {
- for (int i = 0; i < sizeY; i++)
- delete[] pointer[i];
- delete[] pointer;
- sizeY = New.sizeY;
- sizeX = New.sizeX;
- pointer = new Type*[sizeY];
- for (int i = 0; i < sizeY; i++)
- pointer[i] = new Type[sizeX];
- for (int i = 0; i < sizeY; i++)
- for (int j = 0; j < sizeX; j++)
- pointer[i][j] = New.pointer[i][j];
- return *this;
- }
- unsigned int getSizeY() { return sizeY; }
- unsigned int getSizeX() { return sizeX; }
- Array2D(int Y, int X) :
- sizeY(Y), sizeX(X)
- {
- pointer = new Type*[Y];
- for (int i = 0; i < Y; i++)
- pointer[i] = new Type[X];
- }
- Array2D(int Y, int X, Type defaultValue) :
- sizeY(Y), sizeX(X)
- {
- pointer = new Type*[Y];
- for (int i = 0; i < Y; i++)
- pointer[i] = new Type[X];
- for (int i = 0; i < Y; i++)
- for (int j = 0; j < X; j++)
- pointer[i][j] = defaultValue;
- }
- ~Array2D()
- {
- for (int i = 0; i < sizeY; i++)
- delete[] pointer[i];
- delete[] pointer;
- }
- };
- int main()
- {
- Array2D<double> aaa(2, 2);
- aaa[0][0] = 0;
- aaa[0][1] = 0;
- aaa[1][0] = 0;
- aaa[1][1] = 0;
- Array2D<double> bbb(2, 2);
- bbb[0][0] = 1;
- bbb[0][1] = 1;
- bbb[1][0] = 1;
- bbb[1][1] = 1;
- /*
- PROBLEM:
- WYWOLANIE aaa/bbb[0][0] (dowolne indeksy) powoduje access violation reading location
- ex.
- std::cout << aaa[0][0];
- std::cout << bbb[0][0];
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement