|
Программирование >> Дополнительные возможности наследования
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 private: int ItsEngineNumber; ) ; AirPlanePart;;AirPlanePart (int EngineNumber, int PartNumber): ltsEngineNumber(£ngineNumber), Part(PartNumber) II . . .. ....* Класс Part Node ♦. * class PartNode public; PartNode (Parf); PartNodeO; void SetNext(PartNode node) { ItsNext = node; ) PartNode * GetNextO const; Part GetPartO const; private; Part titsPart; PartNode * itsNext; ) ; Выполнения PartNode... PartNode;;PartNode(Part* pPart); itsPart(pPart), itsNext(O) PartNode;;PartNodeO { delete itsPart; itsPart = 0; delete itsNext; itsNext = 0; Возвращает NULL NULL, если нет следующего узла PartNode PartNode ♦ PartNode::GetNext() const return itsNext; Part . PartNode::GetPart() const { if (itsPart) return itsPart; else 115: return NULL; ошибка 116: } 117: 118: 119: 120: ............ Класс Part List ............ 121: class PartsList 122: { 123: public: 124: PartsListO; 125: PartsListO; 126: Необходимо, чтобы конструктор-копировщик и оператор соответствовали друг другу! 127: void Iterate(void (Part::*f)()const) const; 128: Part* Find(int & position, int PartNumber) const; 129; Part. GetFirstO const; 130; void Insert(Part *); 131; Part* operator[](int) const; 132: int GetCountO const { return itsCount; } 133: static PartsListS, GetGlobalPartsListO 134: { 135: return GlobalPartsList; 136: } 137; private: 138: PartNode * pHead; 139: int itsCount; 140: static PartsList GlobalPartsList; 141: } ; 142: 143: PartsList PartsList::GlobalPartsList: 144: 145: 146: PartsList::PartsList(): 147: pHead(O), 148: itsCount(O) 149: { } 150: 151: PartsList::PartsList() 152: { 153: delete pHead; 154: } 155: 156: Part. PartsList::GetFirst() const 157: { 158: if (pHead) 159: return pHead->GetPart(); 160: else 161: return NULL; ловушка ошибок 162: } 163: 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 Part * PartsList;;operator[](int offSet) const { PartNode* pNode = pHead; if (IpHead) return NULL; ловушка ошибок if (offset > itsCount) return NULL; ошибка for (int i=0;i<offSet; i++) pNode = pNode->GetNext(); return pNode->GetPart(); Part* PartsList;:Find( int & position, int PartNumber) const PartNode * pNode = 0; for (pNode = pHead, position = 0; pNodel=NULL; pNode = pNode->GetNext(), position++) if (pNode->GetPart()->GetPartNumber() == PartNumber) break; if (pNode == NULL) return NULL; else return pNode->GetPart(); void PartsList;;Iterate(void (Part;;*func)()const) const { if (IpHead) return; PartNode* pNode = pHead; do (pNode->GetPart()->.func)(); while (pNode = pNode->GetNext()); void PartsList; ;Insert(Part. pPart) { PartNode * pNode = new PartNode(pPart); PartNode * pCurrent = pHead; PartNode * pNext = 0;
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |