He estado leyendo un artículo acerca de las interfaces de C++ (http://accu.org/index.php/journals/233) y estoy completamente perdido en la parte donde dice todas las funciones miembro virtuales deben ser privados artículo introduciendo C++ (la sección titulada "El fortalecimiento de la Separación "). Simplemente no tiene sentido para mí en absoluto.preguntas acerca de una interfaz
Según el autor, el código es así:
class shape {
public:
virtual ~shape();
virtual void move_x(distance x) = 0;
virtual void move_y(distance y) = 0;
virtual void rotate(angle rotation) = 0;
//...
};
class line : public shape {
public:
line(point end_point_1, point end_point_2);
//...
private:
virtual ~line();
virtual void move_x(distance x);
virtual void move_y(distance y);
virtual void rotate(angle rotation);
//...
};
Así que tienen una función virtual pura que es pública, y su aplicación (en la clase de línea) que es privada.
¿Alguien podría explicar cómo se puede llamar a la función move_x? Su especificador de acceso es privado, que dará lugar a un error si trato de hacer esto:
line my_line(point(0,0), point(1,2));
my_line.move_x(-1); // does not compile
Del mismo modo es correcto decir que la interfaz de dibujo (ver anteriormente en este artículo) no puede acceder a estas funciones, ya sea?
Gracias.
Sólo traté de construir el código y que falla al compilar porque el destructor es privado ... – Patrick