Errores, fallos, preguntas - página 1737

 
O incluso una situación más sencilla.
class A
{
  const int a;
  
  A() : a(this.f()) {}
  
  int f() { return(0); }
};
¿Por qué se compila esto? se utiliza incluso ANTES de llamar al cuerpo del constructor.
 
fxsaber:
O incluso una situación más sencilla.
class A
{
  const int a;
  
  A() : a(this.f()) {}
  
  int f() { return(0); }
};
¿Por qué se compila esto? se utiliza incluso ANTES de llamar al cuerpo del constructor.
¿Por qué no incluye una lista de inicialización en el cuerpo? En sentido figurado, un objeto de clase (incluido éste) se inicializa en el signo ':'
 

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

Porque const int a; No se puede hacer de otra manera, ¿verdad?

En sentido figurado, un objeto de una clase (incluida ésta) se inicializa en el signo ':'

Lo tengo.
 
Estimados moderadores, si un producto (indicador) que está disponible de pago en el Market puede hacerse de forma gratuita, ¿es posible mostrar y discutir abiertamente su trabajo en el foro sin temor a ser baneado? O, ¿cuál es la mejor manera de proceder?
 
Yousufkhodja Sultonov:
Estimados moderadores, si un producto (indicador) que está disponible de pago en el Market puede hacerse de forma gratuita, ¿es posible mostrar y discutir abiertamente su trabajo en el foro sin temor a ser baneado? O, ¿qué debo hacer?
Cualquier tipo de publicidad está prohibida, se le prohibirá inmediatamente. es mejor no correr el riesgo.
 

Error de compilación

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 )
Y si se eliminan las líneas (1) y (2), por ejemplo, no hay ningún error. ¿Por qué han interferido?
 
Vladislav Andruschenko:
cualquier publicidad está prohibida, la prohibición es inmediata. No quieres correr ningún riesgo.
Es mejor tener un hilo en el blog, allí se puede hacer cualquier cosa.
 
Alexey Volchanskiy:
Es mejor tener un hilo en el blog, allí se puede hacer todo.
))))))) y promocionar su blog ))))))))
 
Hola a todos. Hay una hendidura extraña en la parte inferior y no puedo quitarla.
Archivos adjuntos:
k1amn19a2h.png  37 kb