Errores, fallos, preguntas - página 1730
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
Así es, aquí en la tipificación, T = A *
Entonces hay un error de compilación aquí
Exactamente. Leo todas estas afirmaciones y sigo sin entender dónde está el problema. ¿Vas a almacenar estos archivos en un disquete?
¿Se desgasta el disco cuando se guarda un archivo de 100K en lugar de uno de 50K? (¿No te hace gracia? )
¿Es normal que por un solo carácter de copyright (que en principio es internacional y está en todas las codificaciones, aunque su código sea mayor que 127) se duplique el tamaño del archivo sin ningún sentido? ¿No es inteligente? ¿Por qué inflar los archivos 2 veces sin necesidad?
El problema no es sólo el tamaño, sino también la búsqueda contextual. Siempre que los archivos estén en ASCII, puede utilizar muchos programas de terceros, incluidos los gestores de archivos, para buscar archivos utilizando la cadena de contexto. Lo uso casi todos los días. El editor nativo de MQ es tan nulo en este aspecto como en muchos otros aspectos de codificación evidentes. Una vez que tenemos unicode, la búsqueda contextual tiene dos problemas: no todos los programas pueden o quieren hacerlo, y para los que pueden, tenemos el punto 2: la lentitud.
Por supuesto, a algunas personas les resulta más fácil comprar un ordenador más rápido además del disco duro que pensar o, al menos, aprender de otros productos cómo debe ser el software de fácil manejo y eficiente.
Entonces hay un error de compilación aquí
También en C++ hay ambigüedad de tipo: const T const
Pero hay una salida: mover la const a la derecha
void f1( T const & a[] ) {} //error: 'const' - unexpected token
class A {};
void f2( A const * const & a[] ) {} //нормально
class B {
void g1() const { f1( a ); } //error: 'f1' - cannot to apply function template
void g2() const { f2( a ); } //нормально
A *a[];
};
También en C++ existe una ambigüedad de tipo: const T const
Pero hay una salida: mover la const a la derecha
C++ compila sin errores (dada la diferencia de sintaxis)Pero lógicamente es extraño cuando "const A" y "A const" significan lo mismo.
Quizás"Aconst*" es un puntero constante a un objeto no-const.
Este parece ser el caso. Porque tal construcción existe.
void f( const A const * const & a[] ) {}
No se puede cambiar el puntero, no se puede cambiar por referencia y no se puede cambiar el objeto(s).
Desde el punto de vista de la obtención de código rápido, ¿podría esta construcción dar al compilador una pista adecuada?
¿Es normal que un solo carácter de copyright (que en principio es internacional y está presente en todas las codificaciones, a pesar de que su código es mayor que 127) haga que el tamaño del archivo aumente 2 veces...
void f( const A const * & a[] ) {}
No puedes cambiar los elementos, pero puedes cambiar el tamaño del array.
Es curioso, resulta que los métodos pueden ser así
class B
{
const A const * Method( const A const * const & a[] ) const
{
return(a[0]);
}
};
Es posible que"Aconst*" sea un puntero constante y no un objeto constante.
Si no es un patrón, entonces "A const *" es igual a "const A *", y si es un patrón, entonces por situación
{
public:
int i;
};
void f( A const * & a[] )
{
a[0].i = 1; // 'i' - constant cannot be modified
}
Específicamente esto - arreglado en el futuro https://www.mql5.com/ru/forum/1111/page1749#comment_2892563
Si no es un patrón, entonces "A const *" es igual a "const A *", y si es un patrón - por esa situación (en C++ )
Es interesante que en un diseño como este...
void f( const A const * & a[] ) {}
Los elementos no pueden ser modificados, pero el tamaño de la matriz sí.