Non mi sembra che MacApp ti abbia detto di togliere l'header file, ma solo di cambiare da <iostream.h> ad <iostream>

Poi non si può inizializzare la dimensione di un array con una variabile sconosciuta a compile time. (Ed è questo che intendeva dire con il secondo quote).

Questa è una dichiarazione valida.
codice:
const int materie(3);  // deve essere esterno alla classe 
float matrice[materie][3];
Questa no. (Solo lo standard C99 riconosce una sintassi simile. Il C++ no )
codice:
int materie(3); 
float matrice[materie][3];
Altimenti devi allocare l'array con new.
Dopodichè ricorda che un metodo di una classe può essere chiamato solo se c'è un oggetto dichiarato di quella classe (fanno eccezione solo i metodi static).
codice:
cout << "La media è " << GetMedia() << endl;
qui manda l'oggetto a cui appartiene GetMedia()