Erros, bugs, perguntas - página 1730
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Isso mesmo, aqui na dactilografia, T = A *
Depois há aqui um erro de compilação
Exactamente. Li todas estas alegações e ainda não consigo entender onde está o problema. Vai guardar estes ficheiros numa disquete?
Desgasta o seu disco quando guarda um ficheiro de 100K em vez de um de 50K? (Não é engraçado para si? )
É normal que devido a um único carácter de copyright (que em princípio é internacional e está em todas as codificações, apesar do seu código ser superior a 127) o tamanho do ficheiro seja duplicado sem qualquer sentido? Não é inteligente? Porquê inchar os ficheiros por 2 vezes sem qualquer necessidade?
Não é apenas o tamanho que é o problema, é também a busca contextual. Desde que os ficheiros estejam em ASCII, pode utilizar muitos programas de terceiros, incluindo gestores de ficheiros, para pesquisar ficheiros utilizando a cadeia de contexto. Utilizo isto quase todos os dias. O editor MQ nativo é tão zilch a este respeito como em muitas outras questões de codificação óbvias. Uma vez que temos unicode, a pesquisa de contexto tem dois problemas: nem todos os programas podem ou querem fazer isso, e para aqueles que podem, obtemos o ponto 2 - lentidão.
Claro que algumas pessoas acham mais fácil comprar um computador mais rápido para além do disco rígido do que pensar ou pelo menos aprender com outros produtos como o software deve ser de fácil utilização e eficiente.
Depois há aqui um erro de compilação
Também em C++ existe uma ambiguidade do tipo: const T const
Mas há uma saída - mover constante para a direita
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[];
};
Também em C++, há ambiguidade do tipo: const T const
Mas há uma saída - mover constante para a direita
C++ compila sem erros (dada a diferença de sintaxe)Mas logicamente é estranho quando "const A" e "A const" significam a mesma coisa.
Talvez"Aconst*" seja um ponteiro constante para um objecto não-constritivo.
Este parece ser o caso. Porque tal construção existe.
void f( const A const * const & a[] ) {}
Não se pode alterar o ponteiro, não se pode alterar por referência e não se pode alterar o(s) objecto(s).
Do ponto de vista de obter um código rápido, poderia tal construção dar uma dica adequada ao compilador?
É normal que um único carácter de copyright (que em princípio é internacional e está presente em todas as codificações, apesar de o seu código ser superior a 127) faça com que o tamanho do ficheiro aumente 2 vezes...
void f( const A const * & a[] ) {}
Não se pode alterar os elementos, mas pode-se alterar o tamanho da matriz.
Engraçado, acontece que os métodos podem ter este aspecto
class B
{
const A const * Method( const A const * const & a[] ) const
{
return(a[0]);
}
};
É possível que"Aconst*" seja um ponteiro constante não para um objecto constante.
Se não for um padrão, então "A const *" é igual a "const A *", e se for um padrão, então por situação
{
public:
int i;
};
void f( A const * & a[] )
{
a[0].i = 1; // 'i' - constant cannot be modified
}
Especificamente isto - fixado no futuro https://www.mql5.com/ru/forum/1111/page1749#comment_2892563
Se não for um padrão, então "A const *" é igual a "const A *", e se um padrão - por essa situação (em C++ )
É interessante que num desenho como este...
void f( const A const * & a[] ) {}
elementos não podem ser alterados, mas o tamanho da matriz pode ser alterado.