Fehler, Irrtümer, Fragen - Seite 1920

 
fxsaber:

Der "Vorfahre" sieht die geschützten/privaten Felder und sollte sie nicht sehen.

Und öffentliche Felder: sollte man oder sollte man nicht?

Kombinator:

Wenn wir hinzufügen

Struktur B;

Keine Wirkung
 
A100:

Und die Öffentlichkeit: sollte oder sollte nicht?

public static field - muss.
 
fxsaber:
öffentliches statisches Feld ist ein Muss.
Zusammengefasst: Die Basisklasse sieht das nicht statische Feld der abgeleiteten Klasse nicht. Gleichzeitig sieht die Basisklasse nicht das protected static des Derivats, sondern das public static. Haben Sie diese Regel selbst erfunden?
 
A100:
Zusammengefasst: Eine Basisklasse sieht keine nicht statischen Felder einer abgeleiteten Klasse. Gleichzeitig sieht die Basisklasse das protected static der abgeleiteten Klasse nicht, sondern das public static. Haben Sie diese Regel selbst erfunden?

Es fällt mir schwer zu sagen, wo solche Verallgemeinerungen gemacht werden. Ich selbst hatte das in keiner Weise im Sinn.

Jede Klasse sieht öffentliche statische Felder/Methoden einer anderen Klasse.

Die Basisklasse sieht niemals die geschützten/privaten (statischen - spielt keine Rolle) Felder/Methoden der abgeleiteten Klasse (öffentliche Vererbung).

Eine abgeleitete Klasse(öffentliche Vererbung) sieht nie die privaten Felder/Methoden einer Basisklasse, sondern immer die geschützten/öffentlichen.

 
fxsaber:

Jede Klasse sieht öffentliche statische Felder/Methoden einer anderen Klasse.

Letztendlich läuft die Frage auf Folgendes hinaus: Ist es richtig, dass in MQL, öffentliche statische Felder/Methoden einer abgeleiteten Klasse in einer Basisklasse verfügbar sind?
 
A100:
Letztendlich läuft die Frage auf Folgendes hinaus: Ist es richtig, dass öffentliche statische Felder/Methoden einer abgeleiteten Klasse in MQL verfügbar sind?

Dies gilt nicht nur für den Fall der Basis/Ableitung, sondern für alle Klassen im Allgemeinen.

 
fxsaber:

Dies gilt nicht nur für den Fall der Basis/Ableitung, sondern für alle Klassen im Allgemeinen.

Die Frage ist nicht aus dem Nichts entstanden

#ifdef __cplusplus
struct B;
struct A {
        int f() { return B::i; } //error E2451
};
struct B : A {
        static int i;
};
int B::i;
#endif
und muss daher eingehend geprüft werden
 
fxsaber:

Jede Klasse sieht öffentliche statische Felder/Methoden einer anderen Klasse.

... Einschließlich der Basisklasse. Daraus ergibt sich der folgende Widerspruch in MQL

struct A {
        static int i;
};
int A::i;
struct B : private A {};
struct C : B {
        C() { Print( A::i ); } //error: 'i' - private member access error
};
C++ ohne Fehler
 
A100:

In C++ sind die Mitglieder von Strukturen standardmäßig öffentlich, in mql privat, genau wie in Klassen.

Ja, ich habe mich geirrt, die Vorwärtsdeklaration in C++ fehlt, wir brauchen eine Definition

 
A100:

... einschließlich der Basisversion. Daraus ergibt sich der folgende Widerspruch in MQL

C++ ohne Fehler

Ja, dies ist ein Fehler in der privaten Vererbung von MQL.