Ver Mensaje Individual
  #4 (permalink)  
Antiguo 18/08/2015, 07:09
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 2 meses
Puntos: 38
Respuesta: ¿Por qué no es obligatorio implementar una función privada?

No es una opción del compilador, al menos lo de declararla en la parte privada, ya lo del public no se para que sirve, seguramente para hacer el proceso inverso, o sea que si hereda algo como privado lo podamos hacer publico, aun que de ese ultimo no lo probé. XD

Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3. class ave {
  4.     public:
  5.         ave(){}
  6.         ~ave(){}
  7.         void volar();
  8.     private:
  9.    
  10. };
  11.  
  12. class penguino: public ave {
  13.     public:
  14.         penguino(){}
  15.         ~penguino(){}
  16.        
  17.     private:
  18.         void volar();
  19. };
  20.  
  21. void ave::volar(){
  22.     cout << "flop..flop..flop XD" << endl;
  23. }
  24.  
  25.  
  26. int main (){
  27.     ave unaAve;
  28.     penguino bigFoot;
  29.     cout << "ave";
  30.     unaAve.volar();
  31.    
  32.     //penguino no puede volar el metodo volar es privado
  33.     //bigFoot.volar();
  34.    
  35.     cin.ignore();
  36.     return 0;
  37. }

Edit
He probado en codeblocks y no me permite lo de la parte publica, será el compilador.
Puse el método volar como privado en la clase principal, y en la clase base puse como public volar. El erro dice que es una referencia indefinida, así que supongo que sea por el compilador.
Yo utilizo la versión 5 de gcc. ¿Cual es la versión de tu compilador en codeblocks? ¿Usas el codeblocks por defecto?
Yo utilizo una versión que se descarga desde el foro que se llama "codeblocks nightly", se actualiza a menudo. Y lo uso conjuntamente con el compilador mingw-w64 que se descarga aparte desde internet.

Última edición por vangodp; 18/08/2015 a las 07:23