Fehler, Irrtümer, Fragen - Seite 1056

 

Ich kann selbst eine Rechtfertigung für die derzeitige Situation finden: Eine strikte Trennung der "Eigentümerschaft" zwischen Instanzen derselben Klasse könnte zu einer unübersichtlichen Syntax bei der Beschreibung aller Arten von binären Operationen (sogar auf derselben Hierarchieebene) führen. Bei der Vererbung sollte der "direkte Zugang" jedoch auf jeden Fall beschnitten werden.

Denn es gibt keinen Grund, eindeutig... ;)

 
MetaDriver:

1. Das Einfügen eines privaten Teils ändert nichts an der Tatsache, dass

Im Falle der Vererbung wird es das, das ist klar.

2. Es werden nur wenige Dinge benötigt... Eine Begründung ist nur möglich, wenn man Zugang zu seinem eigenen Exemplar hat.

3. also lassen Sie es entscheiden. richtig. ;)

4. Das ist die ganze Frage: Was genau gilt als "korrekte Bedienung"?

1. Wenn Sie Ihre Brieftasche wirklich verstecken wollen, warum machen Sie dann gch()?

2) Und wenn ich Instanzen kopiere, gibt es dann welche?

 
Zloy_Koldun:

1. Wenn Sie Ihre Brieftasche wirklich verstecken wollen, warum benutzen Sie dann die Funktion gh()?

2. und wann sind Kopierinstanzen verfügbar?

Lesen Sie meinen früheren Beitrag. Alle Antworten sind dort zu finden.

Einst war es eine "politische Entscheidung", andere Objekte (Instanzen) der eigenen Klasse "standardmäßig" als Freunde zu betrachten - nur um bukaf zu sparen. Und nun nehmen Sie diese Ausnahme als Lebensnorm und wollen ungehindert in die privaten Taschen aller entfernten Verwandten steigen.

Hm...

 
MetaDriver:

1. Das Einfügen eines privaten Teils ändert nichts an der Tatsache, dass

class Человек
{
private:
   int кошелёк; 
public:
   void Человек() {  кошелёк=3; }
   void gч( Человек& ч )  
   { 
    ч.кошелёк--;   // сейчас работает.  а не должно ;)
   }
};

Im Falle der Vererbung wird es das, das ist klar.

2. Es werden nur wenige Dinge benötigt... nur im Falle des Zugangs zum eigenen Exemplar.

3. so soll es entschieden werden. richtig. ;)

4. Das ist die ganze Frage: Was genau ist als "richtige Arbeit" zu betrachten?

Ja, es funktioniert, aber es sollte nicht funktionieren. Übrigens wird bei der automatischen Vervollständigung in ME (beim Schreiben eines ch) die Variable "Brieftasche" nicht angezeigt, da sie privat ist, so dass diese Funktion wahrscheinlich so lange unbemerkt blieb.
 
class Человек
{
private:
   int кошелёк; 
public:
   void Человек() {  кошелёк=3; }
   void gч( Человек& ч )  
   { 
    ч.кошелёк--;   // Работает и должно работать!
   }
   void gcч( const Человек& ч )  
   { 
    ч.кошелёк--;   // Не работает, как и должно.
   }
};
 
Zloy_Koldun:

Ok. Dann erzähl mal. Wie kann man ein solches Feld in einer Klasse so definieren, dass es nur und ausschließlich von Methoden der "Master"-Instanz geändert werden kann und von niemandem sonst.

Wenn das nicht möglich ist, dann ist das Thema der Verkapselung von Titten nicht in der Sprache enthalten, oder?

 
MetaDriver:

Ok. Dann erzähl mal. Wie kann man ein solches Feld in einer Klasse so definieren, dass es nur und ausschließlich von Methoden der "Master"-Instanz geändert werden kann und von niemandem sonst.

Wenn das nicht möglich ist, dann ist das Thema der Verkapselung von Titten wahrscheinlich nicht in der Sprache enthalten, oder?

Das ist unmöglich. Und das muss auch nicht sein. Wenn Sie anderer Meinung sind, nennen Sie ein vernünftiges Beispiel.
 
Was bedeutet dieser Fehler? Der schwebende Auftrag wurde nicht ausgelöst: "HistoryBase: 114 Fehler in 'GBPUSD60'
 
MetaDriver:
class Человек
{
private:
   int кошелёк; 
public:
   void Человек() {  кошелёк=3; }
   void gч( Человек& ч )  
   { 
    ч.кошелёк--;   // сейчас работает.  а не должно ;)
   }
};
Diese Funktion war eine unangenehme Überraschung. Es ist definitiv Blödsinn, wenn der Compiler es erlaubt, das private Feld einer fremden Instanz zu ändern. Sie sollte an servicedesk gesendet werden.
 
C-4:
Diese Funktion ist unangenehm überraschend. Es ist offensichtlich Blödsinn, wenn Ihr Compiler Ihnen erlaubt, das private Feld der Instanz eines anderen zu ändern. Wir sollten es bei servicedesk einstellen.

Ich verstehe nicht: Warum wollen Sie sich so sehr einschränken?

Glauben Sie, dass Ihr Programm dadurch automatisch sicherer wird?

Das wird es nicht! Im Gegenteil.

Es sind unnötige Einschränkungen, die Sie eines Tages dazu bringen werden, es so zu schreiben:

static int Мой_Кошелёк; // Бери, все, кто хочет.