Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Руководство_по_C++_CLI.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
8 Мб
Скачать
☆

34.4.2 Practical Learning: Adding Items to a Collection

  1. Change the FlowerInventory.h header file as follows:  

    #pragma once

    #include "Flower.h"

    public ref class CFlowerInventory : CFlower

    {

    public:

    CFlower ^ Inventory;

    CFlowerInventory(void);

    CFlower ^ Head;

    int Add(CFlower ^ obj);

    };

  2. Access the FlowerInventory.cpp source file and change it as follows:  

    #include "FlowerInventory.h"

    CFlowerInventory::CFlowerInventory(void)

    {

    Head = nullptr;

    Inventory = gcnew CFlower;

    }

    int CFlowerInventory::Add(CFlower ^ NewFlower)

    {

    CFlower ^ Sample = gcnew CFlower;

    Sample = NewFlower;

    Sample->Next = Head;

    Head = Sample;

    return items++;

    }

  3. Save all

34.4.3Retrieving an Item

Once a list exists, the user can explore it. One of the operations performed on items is to locate and retrieve one. To do this, you can create a method that takes as argument an index. The method would examine the argument with regards to the number of items in the list to make sure the argument's value is in the range of the current items of the list. If the number is too low or too high, the method can return nullptr. If the number is in the range, the method can return the item at that position. Here is an example:

using namespace System;

public ref class CNumber

{

public:

double Item;

CNumber ^ Next;

};

public ref class CNumbers

{

private:

int size;

CNumber ^ Sample;

public:

CNumber ^ Head;

CNumbers()

{

size = 0;

Head = nullptr;

}

property int Count

{

int get() { return size; }

}

int Add(CNumber ^ NewItem)

{

CNumber ^ Sample = gcnew CNumber;

Sample = NewItem;

Sample->Next = Head;

Head = Sample;

return size++;

}

CNumber ^ Retrieve(int Position)

{

CNumber ^ Current = Head;

for (int i = Count - 1; i > Position && Current != nullptr; i--)

Current = Current->Next;

return Current;

}

};

int main()

{

CNumbers ^ nbrs = gcnew CNumbers;

Console::WriteLine(L"Number of Items: {0}\n", nbrs->Count);

CNumber ^ one = gcnew CNumber;

one->Item = 2937.45;

nbrs->Add(one);one = gcnew CNumber;

one->Item = 329.459;

nbrs->Add(one);one = gcnew CNumber;

one->Item = 98.23456;

nbrs->Add(one);one = gcnew CNumber;

one->Item = 32465.645;

nbrs->Add(one);

Console::WriteLine(L"\nNumber of Items: {0}\n", nbrs->Count);

for(int i = 0; i < nbrs->Count; i++)

Console::WriteLine("Number: {0}", nbrs->Retrieve(i)->Item);

Console::WriteLine();

return 0;

}

This would produce:

Number of Items: 0

Number of Items: 4

Number: 2937.45

Number: 329.459

Number: 98.23456

Number: 32465.645

Press any key to continue . . .