#ifndef SUDOKUH #define SUDOKUH #include #include "box.h" #include "row.h" #include "col.h" #include "reg.h" using namespace std; class sudoku { static const size_t root = 3; public: static const size_t n = root * root; private: box a[n][n]; row rows[n]; col cols[n]; reg regs[root][root]; public: sudoku(const int initial_a[n][n]); friend ostream& operator<<(ostream& ost, const sudoku& s); friend box& row::iterator::operator*() const; friend box& col::iterator::operator*() const; friend box& reg::iterator::operator*() const; friend box::operator row&() const; friend box::operator col&() const; friend box::operator reg&() const; }; #endif