Erros, bugs, perguntas - página 1737

 
Ou ainda uma situação mais simples.
class A
{
  const int a;
  
  A() : a(this.f()) {}
  
  int f() { return(0); }
};
Porque é que isto se compila? isto é utilizado mesmo ANTES de o corpo do construtor ser chamado.
 
fxsaber:
Ou ainda uma situação mais simples.
class A
{
  const int a;
  
  A() : a(this.f()) {}
  
  int f() { return(0); }
};
Porque é que isto se compila? isto é utilizado mesmo ANTES de o corpo do construtor ser chamado.
Porque não inclui uma lista de inicializações no corpo? Figurativamente falando, um objecto de classe (incluindo este) é inicializado com o sinal ':'.
 

Ilyas:
Почему список инициализации Вы не включаете в тело?

Porque const int a; Não o pode fazer de outra forma, certo?

Figurativamente falando, um objecto de uma classe (incluindo este) é inicializado no sinal ":".

Já está.
 
Caros moderadores, se um produto (indicador) que está disponível por uma taxa no Mercado pode ser disponibilizado gratuitamente, é possível exibir e discutir abertamente o seu trabalho no fórum sem receio de ser banido? Ou, qual é a melhor maneira de proceder?
 
Yousufkhodja Sultonov:
Caros moderadores, se um produto (indicador) que está disponível por uma taxa no Mercado pode ser disponibilizado gratuitamente, é possível exibir e discutir abertamente o seu trabalho no fórum sem receio de ser banido? Ou, o que devo fazer?
Qualquer publicidade é proibida, será imediatamente banida. é melhor não correr o risco.
 

Erro de compilação

class A {};
class B {
public:
        static int k;
};
int B::k = 0;
#define MACRO( classC, classB )      \
class classC : public classB {       \
public:                              \
        classC( A *aa ) : a( aa ) {} \ //(1)
        A *a;                        \ //(2)
        int f( int i );              \
};                                   \
int classC::f( int i )               \
{                                    \
                classB::k = i;       \ //error: '::' - open parenthesis expected
        int j = classB::k;           \ //нормально
        return j;                    \
}
MACRO( C, B )
E se apagar linhas (1) e (2), por exemplo, não há erro. Porque é que interferiram!?
 
 
Vladislav Andruschenko:
qualquer publicidade é banida, a proibição é imediata. Não quer correr quaisquer riscos.
É melhor ter um tópico de blogue, pode fazer qualquer coisa lá.
 
Alexey Volchanskiy:
É melhor ter um tópico de blogue, pode fazer tudo lá.
))))))) e promova o seu blog ))))))))
 
Olá a todos. Há esta estranha indentação no fundo e não consigo tirá-la do caminho.
Arquivos anexados:
k1amn19a2h.png  37 kb