Fehler, Irrtümer, Fragen - Seite 1737

 
Oder eine noch einfachere Situation.
class A
{
  const int a;
  
  A() : a(this.f()) {}
  
  int f() { return(0); }
};
Warum lässt sich das überhaupt kompilieren? Es wird sogar verwendet, BEVOR der Konstruktor-Körper aufgerufen wird.
 
fxsaber:
Oder eine noch einfachere Situation.
class A
{
  const int a;
  
  A() : a(this.f()) {}
  
  int f() { return(0); }
};
Warum lässt sich das überhaupt kompilieren? Es wird sogar verwendet, BEVOR der Konstruktor-Körper aufgerufen wird.
Warum fügen Sie nicht eine Initialisierungsliste in den Textkörper ein? Bildlich gesprochen wird ein Klassenobjekt (auch dieses) durch das Zeichen ':' initialisiert
 

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

Denn const int a; Anders geht es nicht, richtig?

Bildlich gesprochen wird ein Objekt einer Klasse (einschließlich dieser hier) mit dem Zeichen ':' initialisiert

Ich hab's.
 
Sehr geehrte Moderatoren, wenn ein Produkt (Indikator), das gegen eine Gebühr auf dem Markt erhältlich ist, kostenlos hergestellt werden kann, ist es dann möglich, seine Arbeit im Forum offen darzustellen und zu diskutieren, ohne Angst haben zu müssen, gesperrt zu werden? Oder was ist der beste Weg, um fortzufahren?
 
Yousufkhodja Sultonov:
Sehr geehrte Moderatoren, wenn ein Produkt (Indikator), das gegen eine Gebühr auf dem Markt erhältlich ist, kostenlos hergestellt werden kann, ist es dann möglich, seine Arbeit im Forum offen darzustellen und zu diskutieren, ohne befürchten zu müssen, gesperrt zu werden? Oder, was soll ich tun?
Jegliche Werbung ist verboten, Sie werden sofort gesperrt. ist es besser, das Risiko nicht einzugehen.
 

Kompilierungsfehler

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 )
Und wenn Sie z.B. die Zeilen (1) und (2) löschen, gibt es keinen Fehler. Warum haben sie sich eingemischt!?
 
Vladislav Andruschenko:
jede Werbung ist verboten, das Verbot gilt sofort. Sie wollen kein Risiko eingehen.
Es ist besser, einen Blog-Thread zu haben, dort kann man alles machen.
 
Alexey Volchanskiy:
Es ist besser, einen Blog-Thread zu haben, dort kann man alles machen.
))))))) und Werbung für Ihren Blog ))))))))
 
Hallo zusammen. Da ist diese seltsame Einbuchtung am unteren Rand, die ich nicht wegbekomme.
Dateien:
k1amn19a2h.png  37 kb
Grund der Beschwerde: