Ну конечно, какие могут быть возражения
Нигде не написано, что писать против ветра зло, но тем не менее существует общеизвестное понятие что так делать не стоит.
А общеизвестное понятие массива - непрерывный участок памяти, в котором размещаются структуры данных одного типа и "sizeof"
Рассмотрим пример
Код:
class Node
{
public:
Node* next;
Node* prev;
int data;
Node(int d=0, Node* p=0, Node* n=0):next(n), prev(p), data(d) {}
};
class NodeList
{
Node* first;
Node* last;
public:
Node* operator[](int idx)
{
Node* res=first;
for(int i=0; i<idx && res; i++)
{
res=res->next;
}
if(!res)
throw "Out of bound!";
return res;
}
NodeList(Node* f=0, Node* l=0):first(f), last(l) {}
};
int _tmain(int argc, _TCHAR* argv[])
{
Node n1(55);
Node n2(77, &n1);
n1.next=&n2;
NodeList list(&n1, &n2);
printf("%d %d\n", list[0]->data, list[1]->data);
return 0;
}
Является ли NodeList массивом? Безусловно, утверждает Ull9, ведь
NodeList имеет доступ по индексу!
Социальные закладки