// Zadanie 18 z rodziału 16 książki // "Thinking in C++. Edycja polska" // (c) Bruce Eckel 2000 // Autor: Marcin Gil 26641 4IID #include "require.h" #include #include // "Strumienie lancuchowe" #include using namespace std; template class IntArray { T i[sz]; public: IntArray() { memset(i, 0, sz* sizeof(*i)); } T& operator[](T x) { require(x >= 0 && x < sz, "IntArray::operator[] poza zakresem"); return i[x]; } friend ostream& operator<<(ostream& os, const IntArray& ia); friend istream& operator>>(istream& is, IntArray& ia); }; template ostream& IntArray::operator<<(ostream& os, const IntArray& ia) { for(int j = 0; j < ia.sz; j++) { os << ia.i[j]; if(j != ia.sz -1) os << ", "; } os << endl; return os; } template istream& IntArray::operator>>(istream& is, IntArray& ia){ for(int j = 0; j < ia.sz; j++) is >> ia.i[j]; return is; } int main() { stringstream input("47 34 56 92 103"); IntArray I; input >> I; I[4] = -1; // Wykorzystanie przeciazonego operatora [] cout << I; system("PAUSE"); return 0; } ///:~