Напишите класс, производный от Container так, чтобы Vector из параграфа 16.2.1 мог использоваться в стиле контейнера из параграфа 16.2.2
Так вообщем тут все запутано и я ничо не понял что же нам нужно написать все таки. Так написать нам нужно все таки класс производный от Container. Уже более менее ясно. Как же его написать? А так чтобы Vector из параграфа 16.2.1 мог использоваться в стиле контейнера из параграфа 16.2.2. Отут уже загвоздочка. Ничерта мне не ясно.
Условие задачки как оказалось запутанное и мне пришлось обратиться за помощью и там мне подсказали просто Vector унаследовать от Container, что я щас и сделаю.
Вот код который у меня получился:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
//cozdaem klacc proizvodnui ot Container. #include <iostream> using std::cout; using std::endl; struct Object { Object* pre; Object* next; //... public: //konctryktor po ymolchaniyu Object():pre(0),next(0){} //virtual6nui dectryktor virtual ~Object(){}; }; //cam klacc kontainer class Container : public Object { public: struct Bad_op//klacc icklyuchenii { const char* p; Bad_op(const char* pp):p(pp){} }; virtual void put(Object*){throw Bad_op("put");} virtual Object* get() {throw Bad_op("get");} virtual Object*& operator[](int){throw Bad_op("[]");} //... }; class Ship : public Container { public: int data; //konctryktor po ymolchaniyu Ship():data(0){} //konctryktor preobrazovani9 Ship(int a):data(a){} }; //Vector iz 16.2.1 template<class T> class Vector : public Container//optimal6nui { public: T mass[30]; int size; explicit Vector(size_t n):size(n){}//inicializaci9 n ob6ektami co znacheniem T() T& operator[](size_t n)//indekcaci9 { if(n<=size&&n>=0) return mass[n]; } T getSize(){return size;} //... }; int main() { cout <<"Klacc proizvodnui ot Container"<<endl; Ship a(1); Ship b(2); Ship c(3); Vector<Ship> vec(3); vec[0]=a; vec[1]=b; vec[2]=c; cout <<"vec[0].data= "<<vec[0].data<<endl; cout <<"vec[1].data= "<<vec[1].data<<endl; cout <<"vec[2].data= "<<vec[2].data<<endl; return 0; } |
Просто сделали наследование и просто создали вектор ток который нам нужен.
[youtube]http://www.youtube.com/watch?v=zrM7wTd8r34[/youtube]