Сущность технологии COM



Объекты классов - часть 3


STDMETHODIMP GetApe(long nApeID, IApe **ppApe) { // assume that a table of well-known gorillas is // being maintained somewhere else // допустим, что таблица для известных горилл // поддерживается где-нибудь еще

extern Gorilla *g_rgWellKnownGorillas[]; extern int g_nMaxGorillas;

// assert that nApeID is a valid index // объявляем, что nApeID - допустимый индекс *ррАре = 0; if (nApeID > g_nMaxGorillas nApeID < 0) return E_INVALIDARG; // assume that the ID is simply the index into the table // допустим, что ID - просто индекс в таблице if ((*ppApe = g_rgWellKnownGorillas[nApeID]) == 0) return E_INVALIDARG; (*ppApe)->AddRef(); return S_OK; }

STDMETHODIMP get_AverageWeight(long *plbs) { extern *g_rgWellKnownGorillas[]; extern int g_nMaxGorillas; *plbs = 0; long lbs; for (int i = 0; i < g_nMaxGorillas; i++) { g_rgWellKnownGorillas[i]->get_Weight(&lbs); *plbs += lbs; }

// assumes g_nMaxGorillas is non-zero // предполагается, что g_nMaxGorillas ненулевой *plbs /= g_nMaxGorillas; return S_OK; } };

Отметим, что в этом коде предполагается, что внешняя таблица известных горилл уже поддерживается — или самими копиями Gorilla, или каким-нибудь другим посредником (agent).




Содержание  Назад  Вперед