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

1 ... 147 148 149 [ 150 ] 151 152 153 ... 265


48: 49:

50: * * * Авиационные детали

52; class AirPlanePart ; public Part

53: {

54: public:

55; AirPlanePart();itsEngineNunber(1){ } ;

56: AirPlanePart

57: (Int EngineNumber, int PartNumber);

58; virtual void DisplayO const

59; {

50; Part;:Display();

61: oout Engine No,; ;

62: oout itsEngineNumber endl;

63; }

64: private:

65; int ItsEngineNumber;

66; } ;

68: AirPlanePart::AirPlanePart

69: (int EngineNumber, int PartNumber);

70: itsEngineNumber(EngineNumber),

71: Part(PartNumber)

72: { }

74: ************** Узлы списка деталей

75: class PartNode

76: {

77: public:

78: PartNode (Part.);

79: PartNodeO;

80: void SetNext(PartNode * node)

81: { itsNext = node; }

82: PartNode . GetNextO const;

83; Part GetPartO const;

84: private:

85: Part itsPart;

86: PartNode itsNext;

87: } ;

88: Выполнение PartNode.,. 89:

90: PartNode::PartNode(Part. pPart):

91: itsPart(pPart),

92: itsNext(O)

93: { }

95: PartNode:: PartNodeO

96: {

97: delete itsPart;



98: itsPart = 0; 99: delete itsNext; itsNext = 0;

100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

Возвращается NULL, если нет следующего узла PartNode

PartNode * PartNode::GetNext() const

return itsNext;

Part ♦ PartNode;:GetPart() const {

if (itsPart)

return itsPart; else

return NULL; ошибка

................ Список деталей .** .. . .

class PartsList (

public: PartsLisK); PartsLlstO;

необходимо, чтобы конструктор-копировщик и оператор соответствовали друг другу!

void Iterate(void (Part:: !)()const) const;

Part* Find(int & position, int PartNumber) const;

Part* GetFirstO const;

void Insert(Part *);

Part* operator[](int) const;

int GetCountO const { return ItsCount;}

static PartsList& GetGlobalPartsList()

return GlobalPartsList;

private: Parttode * pHead; int ItsCount;

static PartsList GlobalPartsList; } ;

PartsList PartsList;:GlobalPartsList;

PartsList::PartsList(): pHead(O),



147: itsCount(O)

148: { }

149:

150: PartsList:: PartsList() 151: (

152: delete pHead;

153: }

154:

155: Part* PartsList::GetFirst() const 156: {

157: if (pHead)

158: return pHead->GetPart();

159: else

160: return NULL; ловушка ошибок

161: }

162:

163: Part . PartsList::operator[](int offSet) const 164: {

165: PartNode* pNode = pHead; 166:

167: if (!pHead)

168: return NULL; ловушка ошибок

169:

170: if (offSet > itsCount) 171: return NULL; ошибка

172:

173: for (int i=0:i<offSet; 1++) 174; pNode = pNode->GetNext();

175:

176: return pNode->GetPart();

177: }

178:

179: Part* PartsList::Find( 180: int & position,

181: int PartNumber) const

182: {

183: PartNode * pNode = 0;

184: for (pNode = pHead, position = 0;

185: pNode!=NULL:

186: pNode = pNode->GetNext(), position++)

187: {

188: if (pNode->GetPart()->GetPartNumber()== PartNumber)

189: break;

190: }

191: if (pNode == NULL) 192: return NULL;

193: else

194: return pNode->GetPart();

195: }

196:



1 ... 147 148 149 [ 150 ] 151 152 153 ... 265

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