Errores, fallos, preguntas - página 1055
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Encuentra a servicedesk en su perfil.
No hay contradicción aquí, de lo contrario B tendría acceso a C.t como se muestra a continuación, mientras que B no se deriva de C
En tu ejemplo, B debería tener acceso a C.t y no veo ninguna razón para prohibirlo.
Los dos sois raros, confundís clases e instancias. Tampoco creo que otra instancia de la misma clase B deba tener acceso a t.
Los campos protegidos deben ser accesibles sólo por los propios (de la misma instancia B, es decir, esto), y otras instancias (incluso de la misma clase B) deben estar cerradas... Aquí permítanme cambiar el nombre para mayor claridad:
Es decir, para mí - ambas funciones no deberían compilar, no sólo la primera. Si en C++ la segunda compila y funciona - eso es un pinchazo de C++, no una virtud.
En resumen:
Su comparación con la cartera es incorrecta.
Puedo poner un ejemplo en el que se necesita acceso a los miembros proctos, pero no se trata de mis preferencias ni de las tuyas.
Si el programador quiere prohibir algo, puede hacerlo él mismo y el compilador debe prohibirlo,
si es probable que interfiera con el programa.
En el ejemplo anterior, la clase B conoce la clase A, por lo que no va a estropear nada allí.
Y si quieres desautorizarlo, ponlo en la sección Private, o no heredes de una clase, o piensa en mil formas más.
Es decir, para mí - ambas funciones no deberían compilar, no sólo la primera. Si en C++ la segunda compila y funciona - eso es un defecto de C++, no una virtud.
Entonces tampoco se podría acceder a su cartera
Una vez más: distinga con cuidado entre clases (tipos) e instancias (variables). Los campos propios (este) proctorados son de libre acceso, también por herencia (a diferencia de los privados), los otros (otras variables de la misma clase) no deben ser accesibles. (debería ser inaccesible)
.....
En el ejemplo anterior, la clase B conoce la clase A, por lo que no va a estropear nada allí.
...............
El hecho de saber que tienes una cartera, no es razón para acceder a ella. A la tuya, por favor, sólo a través de get() y set() - si lo permites (public: int get(); int set();).
Que yo sepa que tienes una cartera, no es razón para acceder a ella. A la tuya - por favor. A la tuya - sólo a través de get() y set() - si lo permites (public: int get(); int set();).
La cartera es sólo un caso especial. Y nadie impide que se coloque en la parte privada.
En otro caso, puede que necesites acceder a la variable de la clase padre del objeto de otra persona.
Y esto lo decide el programador si lo permite o no. Y el compilador debe garantizar que el programa funcione correctamente.
He dado un ejemplo de contradicción ... el objeto es el mismo
No hay ninguna contradicción. Si te refieres a ti mismo a través de una "interfaz externa", prepárate para recibir un golpe en la cara por ti mismo ;)
..........., porque en el momento de la compilación no tiene información sobre los objetos.
1. La cartera es sólo un caso especial. Y nadie impide que se coloque en la parte privada.
2. En otro caso, puede que necesites acceder a la variable de la clase padre del objeto de otra persona.
3 Y esto lo decide el programador si lo permite o no.
4. Y es el compilador el que se encarga de que el programa funcione correctamente.
1. Ponerlo en la parte privada no cambiará nada en caso de
Heredará, eso es evidente.
2. Hay muy pocas cosas que haya que hacer. sólo están disponibles cuando se accede a su propia copia.
3. que decida él. correcto. ;)
4. Esta es toda la cuestión: qué cuenta exactamente como "trabajo correcto".