Erros, bugs, perguntas - página 2092

 
Renat Fatkhullin:

build 1711, o mesmo erro foi observado em 1709 e 1700, nunca o tinha notado antes:

- se eu solicitar uma hora de abertura de bar que não esteja na história, então CopyTime congela por tempo desconhecido, por exemplo, solicito uma hora de abertura de bar:

CopyTime(_ticker, _tf, _start, _stop, _buff)
где:
_ticker == RTS-9.12
_tf == PERIOD_M1
_start == D'2017.09.20 19:01'
_stop == D'2017.09.20 19:00'
_buff == динамический массив типа datetime

mas porque a sessão da noite foi transferida para as 19:05 e não há barras na história para este intervalo de tempo, então, depois de chamar a função, o controlo do programa não é transferido de volta e fica pendurado.

Embora, a função deva sair com um erro.

 

Erro na execução

typedef void (*fn)();
struct A {
        fn a;
};
struct B : A {
        void a() {}
};
void OnStart()
{
        B b;
        b.a(); //error: invalid function pointer call
}
typedef void (*fn)();
void g() {}
struct A {
        A() : a( g ) {}
        fn a;
};
struct B : A {
        void a() {}
};
void OnStart()
{
        B b;
        b.a(); //вместо B::a() вызывается g()
}
 

Erro de compilação

typedef void (*fn)();
struct A {
        fn a;
};
struct B : A {
        void a( int ) {}
};
void OnStart()
{
        B b;
        b.a( 2 ); //error: '2' - wrong parameters count
}

 
Não me consigo lembrar da nuance da variável estática. Pode lembrar-me porque é que este bastardo faz isto?
class A
{
public:
  A()
  {
    A::f();
  }
  
  static void f()
  {
    static bool Tmp = true;
    
    Print(Tmp);
  }
};

void OnStart()
{
  static A a; // static - false, иначе - true;
}
 

Fórum sobre comércio, sistemas automatizados de comércio e testes de estratégia comercial

Insectos, insectos, perguntas

A100, 2017.12.19 23:04

Erro ao executar

typedef void (*fn)();
struct A {
        fn a;
};
struct B : A {
        void a() {}
};
void OnStart()
{
        B b;
        b.a(); //error: invalid function pointer call
}
void g() {}
void OnStart()
{
        B b;
        b.a = g;
        b.a(); //вместо B::a() вызывается g()
}

Parece ser uma razão compreensível em ambos os casos - campo e método são o mesmo nome, por isso a referência a campo e método são exactamente os mesmos. De forma correspondente, o compilador chama o campo em vez do método. No primeiro caso, o campo não está definido, por isso é um aborrecimento. No segundo caso, tudo está bem - o campo é chamado.

Assim, se declararmos um método na base e um campo com o mesmo nome na descendência, ele funcionará numa sequência diferente.

O compilador deve dar os seguintes resultados

declaration of 'a' hides member declaration at line 3
 
fxsaber:

Consequentemente, o compilador chama o campo, não o método.

Como é que um campo é melhor do que um método? C++, por exemplo, chama um método em vez de um campo - isto é lógico - porque o método está numa classe derivada, por isso está mais próximo. Por outras palavras, se a assinatura na classe derivada se encaixa plenamente, porquê envolver-se na classe base?

 
A100:

Como é que um campo é melhor do que um método? Por exemplo, C++ chama um método em vez de um campo, o que é lógico porque o método está numa classe derivada, por isso está mais próximo. Por outras palavras, se a assinatura numa classe derivada se encaixa totalmente, porquê envolver-se na classe base?

Compreende que criou uma situação artificial, que deve ser sempre acompanhada por um aviso do compilador.

Sobre o tema "mais perto", escrevi

fxsaber:

se declarar um método na base e um campo com o mesmo nome na descendência, ele funcionará numa sequência diferente.

 
fxsaber:
Não me consigo lembrar da nuança com as variáveis estáticas. Por favor lembre-me porque é que este bastardo gera isto?

Todo o problema é a sequência de inicialização das variáveis e a sequência de execução do código.

É mais fácil de compreender em modo de depuração passo a passo do que de explicar por palavras.

 

Insecto estranho com trabalhos freelance.

havia 4 postos de trabalho em processo. 1 passou a 5. um passou a 5.

Aceitei mais um emprego e diz 5. Aceitei mais um emprego e diz 6. Aceitei mais um emprego e diz 4 empregos mas diz 6 empregos em curso.

aceitou outro trabalho com 5 trabalhos em curso 7

agora não posso aceitar empregos embora só tenha 5

número de candidatura

1913868

 
Aleksei Beliakov:

Insecto estranho com trabalhos freelance.

havia 4 postos de trabalho em curso. aceitei 1 posto de trabalho tornou-se 5. passei um posto de trabalho deixou 5.

Aceitei mais um emprego e diz 5. Aceitei mais um emprego e diz 6. Aceitei mais um emprego e diz 4 empregos mas diz 6 empregos em curso.

levou outra com 5 obras mas "em curso" 7

agora não posso aceitar empregos embora só tenha 5

número de candidatura

1913868

Obrigado pela mensagem, trabalhando numa correcção.