Программирование >>  Дополнительные возможности наследования 

1 ... 150 151 152 [ 153 ] 154 155 156 ... 265


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;



1 ... 150 151 152 [ 153 ] 154 155 156 ... 265

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика