kemi (statz) | #2, Főfasz (2970) |
1675 | #2236 | ^ | Idézet | Fri, 07 Dec 2012 11:09:25 +01 |
94.21.*.* | *.pool.digikabel.hu |
Eddig úgy néz ki, hogy oké, de azért még este megkérdezem. Nekem ez a C64 verzió jobban bejön. Amit te belinkeltél az már egy japán remix C64 remixe, ez viszont az eredetiről van. C++-ban a sima tömböt túl lehet indexelni, akkor jobb esetben hülyeséget olvas be a programod, rosszabb esetben lefagy. Azonkívül függvénynek nem tudsz tömböt átadni paraméterként, csak tömbre mutató pointert, annak viszont nem mindig tudod a hosszát. Fórumokon erre a vector-t javasolták, ami viszont dinamikus tömb, úgyhogy írtam egy ahhoz hasonló osztályt, de statikus tömböt tárol, indexelésnél ellenőriz, és mindig lehet tudni a hosszát, meg C++ zéhára jó referenciakód, mert benne van minden amit tudnia kell egy objektumnak. :P #ifndef ARRAY_H_ #define ARRAY_H_ #include <stdexcept> template <class T> class Array { public: Array(int length) { __length = length; __array = new T[__length]; } Array(Array<T>& arr) { __length = arr.length(); __array = new T[__length]; for (int i = 0; i < __length; i++) { __array[i] = arr[i]; } } virtual ~Array() { delete __array; } Array<T>& operator =(Array<T>& arr) { delete __array; __length = arr.length(); __array = new T[__length]; for (int i = 0; i < __length; i++) { __array[i] = arr[i]; } return *this; } T& operator [](int idx) { if (idx >= 0 && idx < __length) return __array[idx]; else throw std::out_of_range("Index out of range."); } int length() { return __length; } private: int __length; T* __array; }; #endif |