Ist die Größe zur Compilezeit bekannt, dann ist ein Array (oder oft besser: std::array) die bessere Wahl. Steht dir Größe erst zur Laufzeit fest oder ist gar veränderlich, dann geht ein Array nicht mehr und es muss std::vector oder ein anderer Container sein (in ein paar Jahren mag dieser Ratschlag eventuell nicht mehr aktuell sein, das wird dir sicher gleich ein C++17-early-adopter erklären).
Zum Fehler: Nun, was soll man noch sagen, was der Compiler nicht schon gesagt hat? Bei Arrays muss man bei der Deklaration zwar nicht unbedingt die Größe angeben, aber man muss den Datentyp genau angeben. Und der Datentyp ist hier wieder ein Array und um dessen Typ genau zu kennen, ist die Größe nötig.
Der spätere Fehler bei der Initialisierung ist doch auch klar beschrieben. Du sagst, das sollen 3x3 strings sein, gibst aber einmal 4 und einmal 5 Initialisierer an. Mehrdimensionale Arrays sind immer "rechteckig". Ist dies nicht erwünscht, dann muss man eine andere Datenstruktur wählen (Oft ist es erwünscht und dann wäre es falsch, etwas anderes zu wählen). Dann muss der innere Typ irgendetwas sein, was seine Größe selber kennt (bei einem Array geht die Größeninformation beim Array to pointer decay verloren). Das kann vieles sein. std::vector kennt beispielsweise seine eigene Größe. Aber auch ein Zeiger auf ein Feld kann seine eigene Größe "kennen", wenn diese per Konvention aus den gespeicherten Daten ersichtlich ist, zum Beispiel bei C-Strings.
Allgemein: Warum ist alles static? Bei den Wochentagen sehe ich das ja noch ein (wobei ich bezweifle, ob ein Stundenplan auch etwas über die Namensgebung von Wochentagen wissen muss. Das gehört eigentlich woanders hin), aber block ist doch nichts anderes als ein umständliches index + 1. Bei multi habe ich gar keine Ahnung, wozu es da ist.
Sollen das eigentlich alles Konstanten sein? Falls ja: Mach sie auch konstant! Die Bezeichnung der Wochentage ändert sich sicherlich nicht im Programmverlauf. Dann kann man sich auch den std::string sparen und stattdessen const char const* als Datentyp nehmen, der dann auf das Zeichenkettenliteral verweist. Das ist ein Stück effizienter.