"Escuela" tiene un puntero a un objeto de tipo "Rector". No hay nada extraño en llamar a "Rector::toString" desde "Escuela". Eso sí, dado que se trata de un puntero no estaría de más asegurarse de que el puntero no apunta a "null".
Código C++:
Ver originalclass Escuela
{
private:
string nombre_escuela;
int capacidad;
Rector *rec; //implementación de la relación
public:
string toString( )
{
stringstream s;
s << "Nombre de la Escuela: "<<nombre_escuela<<endl;
s << "Capacidad: "<<capacidad<<endl;
if ( rec != nullptr )
s << rec->toString();
return s.str( );
}
};
Hablando de "null", no lo pones en el código así que no se si está implementado... en el constructor de "Escuela", si no se le pasa ningún objeto de tipo "Rector", el puntero interno debería apuntar a "null".
Editado: Para responder a la duda del main sería recomendable tener las dos clases completas.