| kemi (statz) | ![]() #2, Főfasz (2982) |
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 |