Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2017
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
Archivo de cabecera solo incluido en otro

No se me ocurre otro titulo mas descriptivo asi que intentaré explicarme aqui lo mejor posible.
Imaginen un proyecto donde tenemos: main.cpp, clase1.cpp, clase1.h, clase2.cpp, clase2.h.
si en clase1.h uso dentro de esa clase a la clase2 me veo obligado a incluir ese archivo de cabecera en clase1.h y luego, al incluir clase1.h a main.cpp tengo acceso a ambas clases y lo que quiero es restringir y que solo tenga acceso a la clase1 y que la clase2 solo se pueda usar dentro de clase1. No se si me he explicado con claridad. ¿Alguien me ayuda con eso?
Os pongo la que seria la clase1:
Código PHP:
#ifndef CLASS_ALUMNOS
#define CLASS_ALUMNOS
#include "RegAlumno.h"

class Alumnos
{
    private:
        
RegAlumno *alumnos//Es la clase declarada en RegAlumno.h
        
int nAlumnos;
    public:
        
Alumnos(int nAlumnos);
        ~
Alumnos();
        
void CalculaCalificacionesMedias(void);
        
void MostrarCalificacionesMedias(void);
        
void SolicitarDatos(void);
};
#endif
//--------------------------------------------------------------------------- 
Responder Con Cita
  #2  
Antiguo 08-06-2017
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Me temo que en C no se puede hacer eso. O al menos no de forma simple.

Se me ocurre que puedes intentar declarar la clase RegAlumno en la sección privada, pero no sé si funcionaría:
Código:
  class Alumnos {
    private:
      class RegAlumno { ...};
      RegAlumno *alumnos;
    (...)
  };
o también:
Código:
  class Alumnos {
    private:
      #include "RegAlumno.h"
      RegAlumno *alumnos;
    (...)
  };
Pero ya digo que no sé si funcionaría, hace mucho que no uso C++.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 10-06-2017
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Sustituye:
Código:
RegAlumno *alumnos;
Código:
void* alumnos;
En el cuerpo de la clase pones el #include "RegAlumno.h" y haces un cast del puntero alumnos a RegAlumno* para usar ese miembro.

Otro truco es hacerlo como lo hacer ahora pero al usuario final le das una cabecera donde lo cambias por un void* dando el cuerpo ya compilado en un obj o dll


Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como hacer que un formulario solo se pueda mover dentro de otro jasmad OOP 8 19-09-2011 16:27:10
enviar un archivo solo con la IP de la pc kurono Varios 13 01-02-2009 10:39:18
Qreport con solo la cabecera chipsoni Impresión 2 07-02-2007 17:55:20
crear cabecera archivo xml miquellg Internet 0 24-08-2005 18:11:08
Crear un solo archivo igest2000 Varios 1 26-06-2005 20:35:08


La franja horaria es GMT +2. Ahora son las 00:30:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi