Pourquoi est-ce que ça compile ? C'est utilisé même AVANT que le corps du constructeur soit appelé.
Pourquoi ne pas inclure une liste d'initialisation dans le corps ? Au sens figuré, un objet de classe (y compris celui-ci) est initialisé au signe " :".
Chers modérateurs, si un produit (indicateur) payant sur le marché peut être rendu gratuit, est-il possible d'afficher et de discuter ouvertement de son travail sur le forum sans craindre d'être banni ? Ou, quelle est la meilleure façon de procéder ?
Yousufkhodja Sultonov: Chers modérateurs, si un produit (indicateur) payant sur le marché peut être rendu gratuit, est-il possible d'afficher et de discuter ouvertement de son travail sur le forum sans craindre d'être banni ? Ou, qu'est-ce que je devrais faire ?
Toute publicité est interdite, vous serez banni immédiatement. il est préférable de ne pas prendre le risque.
class A {}; class B { public: staticint 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 )
Et si vous supprimez les lignes (1) et (2), par exemple, il n'y a pas d'erreur. Pourquoi ont-ils interféré ?
Ou une situation encore plus simple.
{
const int a;
A() : a(this.f()) {}
int f() { return(0); }
};
Ilyas:
Почему список инициализации Вы не включаете в тело?
Parce que const int a ; Vous ne pouvez pas le faire autrement, non ?
Au sens figuré, un objet d'une classe (y compris celle-ci) est initialisé sur le signe ':'.
Chers modérateurs, si un produit (indicateur) payant sur le marché peut être rendu gratuit, est-il possible d'afficher et de discuter ouvertement de son travail sur le forum sans craindre d'être banni ? Ou, qu'est-ce que je devrais faire ?
Erreur de compilation
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 )
Bug du moteur web
toute publicité est interdite, l'interdiction est immédiate. Vous ne voulez pas prendre de risques.
Il est préférable d'avoir un fil de blog, vous pouvez tout y faire.
Bonjour à tous. Il y a cette indentation bizarre en bas et je n'arrive pas à la faire disparaître.
Cet espace est réservé à l'affichage des volumes :