Cuando se trabaja con objetos y otras instancias de una clase, acceder a los atributos es una de las operaciones habituales de un programador. Obtener acceso a ciertos datos almacenados en objetos puede ser difícil, dados los métodos de seguridad utilizados para ellos. Por lo tanto, los atributos cerrados por los especificadores privados y protegidos pueden extraerse de una instancia de clase solo en un método que pertenezca a un objeto de la misma clase o una secundaria (para la clase protegida).
Instrucciones
Paso 1
Cree un objeto o un puntero a una instancia de la clase cuyo atributo necesita en su programa. La construcción estándar para tal operación es CMyClass myObj1. A veces, para inicializar un objeto, debe pasar ciertos parámetros al constructor de la clase. En este caso, el registro de la creación del objeto puede tener este aspecto: CMyClass myObj1 (param1, param2, param3), donde CMyClass es el nombre de la clase, myObj1 es el nombre del objeto que se está creando y se enumeran todos los parámetros solicitados por el constructor entre paréntesis. Se crea un puntero a una instancia de clase de la siguiente manera: CMyClass * pObj1 = new CMyClass (param1, param2, param3).
Paso 2
La forma más sencilla de llamar a un atributo es hacer referencia a él directamente en cualquier parte del programa. Sin embargo, esto solo es posible para datos abiertos descritos en una clase con el modificador público. El acceso directo a través de un objeto se ve así: myObj1.attr1, donde attr1 es un atributo de esta clase. Para un puntero, la llamada sería: pObj1–> attr1.
Paso 3
Si el atributo al que debe hacer referencia tiene el estado oculto y se describe en una clase con el modificador privado, el acceso a él solo es posible desde un método que pertenezca a la misma clase. El método o función de la clase debe tener el estado público público. Agregue un nuevo método a la clase, donde escriba el procesamiento del atributo requerido. En este caso, se pueden pasar parámetros a la función, dependiendo del valor del cual se realicen determinadas acciones. La función en sí también puede devolver datos, como el contenido de un atributo. Código de programa C ++ que implementa ambas funciones para trabajar con un atributo privado: class CMyClass {protected: int attr1; // atributo público: void funcA1 (int param) {attr1 = param; } int funcA2 () {return attr1; }};
Paso 4
Por lo tanto, para establecer el atributo privado attr1 en el valor que necesita, llame a un método de la misma clase utilizando el objeto creado anteriormente: myObj1.funcA1 (10) - mediante una operación implícita similar, el valor 10 se coloca en el atributo attr1. Cuando se trabaja con un puntero a una instancia de una clase, una operación similar se verá así: рObj1–> funcA (10). Para recuperar el atributo privado attr1 y averiguar el valor almacenado en él, llame a otro método de la clase: int Res = myObj1.funcA2 (). En este caso, a la variable entera Res se le asignará el valor de la variable de clase oculta.
Paso 5
Si necesita llamar a un atributo con estado protegido en todos los objetos de las clases secundarias, consulte su variable directamente. Sin embargo, cuando se trabaja en funciones de clases extranjeras, el acceso a los datos protegidos deberá obtenerse de la forma descrita anteriormente.
Paso 6
Para llamar a un atributo sin crear un objeto, declare su variable en la clase como estática usando la siguiente construcción: static int attr1. En este caso, puede extraer el atributo en cualquier parte del código del programa especificando la entrada: CMyClass:: attr1.