Hello, help to implement a recursive algorithm for the output of all elements. Example output: [1,2.0, false, [1,2], 4.2, [1, [2], true]], where [] is a container. Perhaps you need to start from the top, display the contents of the container, if the container again meets deepen, so to the end. But where to start? I can’t even imagine how to overload the methods for the element and the container
upd: OP went to sleep, will be in the morning
class base { public: virtual bool Equals(base *n) = 0; virtual void ToString(char* bufer) = 0; virtual ~base() {} }; class element : public base { public: union { int iVar; float fVar; bool bVar; }; public: element(int var) { iVar = var; } element(float var) { fVar = var; } element(bool var) { bVar = var; } bool Equals(base* n) { element* p = dynamic_cast<element*>(n); if (bVar == p->bVar || fVar == p->fVar || iVar == p->iVar) { return true; } else { return false; } } bool operator == (element* n) { if (bVar == n->bVar || fVar == n->fVar || iVar == n->iVar) { return true; } else { return false; } } void ToString(char* buffer) { } }; class container : public base { public: private: base*** array; int order; int ni; int nj; //последний элемент public: container(int ord) { ni = 0; nj = 0; order = ord; array = new base**[order]; for (int i = 0; i < order; i++) { array[i] = new base*[order]; for (int j = 0; j < order; j++) { array[i][j] = NULL; } } } ~container() { for (int i = 0; i < order; i++) { if (array[i]) { delete[] array[i]; } delete[] array; array = NULL; order = 0; } } bool Add(base *n) { //добавление элемента в конец array[ni][nj] = n; if (nj != order - 1) { nj++; return true; } else if (nj == order - 1 && ni != order - 1) { nj = 0; ni++; } else if (nj == order - 1 && ni == order - 1) { return false; } return false; } bool Equals(base* n) { container* p = dynamic_cast<container*>(n); bool full = true; for (int i = 0; i < order; i++) { for (int j = 0; j < order; j++) { if (array[i][j] != p->array[i][j]) { full = false; } } } return full; } void ToString(char* buffer) { }; };