Fehler, Irrtümer, Fragen - Seite 1119

 

Kompilierungsfehler: Der Compiler denkt, ich übergebe einen Zeiger per Referenz

class A {
};

void f1( A*  a ) {}
void f2( int a ) {}

void OnStart()
{
        A* const a1 = new A();
        f1( a1 ); // ошибка компиляции: constant variable cannot be as reference
        const int a2 = 1;
        f2( a2 ); //все нормально
}

Wenn ich f1( A* const a ) schreibe, wird alles gut kompiliert, aber ich schreibe nicht f2( const int a ) und im Falle von f2( int a ) bekommt der Compiler es richtig


по сути
f1( A*  a ) отличается от f1( A* const  a )
тем же, чем
f2( int a ) отличается от f2( const int a )
dann sollte auch in f2( a2 ) ein Fehler auftreten
 
Lone_Irbis:

Ich möchte hier nicht den ganzen Code und das .set dazu posten, aber ich kann es irgendwo hinschicken.

Ich danke Ihnen! Versuchen wir, es zu reproduzieren. Der Code kann an servicedesk gesendet werden (nach allen Kontrollen wird er garantiert gelöscht).
 

Kann einen const A*-Zeiger nicht löschen

class A {
};

void OnStart()
{
        const A *a = new A;
        delete( a ); //ошибка компиляции: constant cannot be modified
}

Auf den ersten Blick scheint es logisch - delete ruft den Destruktor ~A() auf, und der kann nicht const sein (***)

ABER dann wäre es im Prinzip unmöglich, das Objekt im folgenden Beispiel zu löschen

void f()
{
    const A a;
}

weil der Destruktor, der nicht konstant sein kann, beim Verlassen von f() immer noch aufgerufen wird und daher die (***)-Doktrin nicht funktioniert

Außerdem verhindert der C++-Compiler die Funktion delete( a ) nicht, selbst wenn das Argument als const A * deklariert ist (der Destruktor kann nicht als const deklariert werden, da er für beliebige, auch nicht-konstante, Objekte aufgerufen wird)

 
zählt nicht mehr für Beiträge(
 
GriFFon4ik:
zählt nicht mehr für Beiträge(
Ja, nicht mehr ...
 
GriFFon4ik:
zählt nicht mehr für Beiträge(
Wie auch immer.
 
barabashkakvn:
Tja.
traurig :-(
 

Ich habe den Beitrag überprüft, er hat sich nicht erhöht. Vielleicht gibt es eine clevere, verbesserte Formel...

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Interessant und humorvoll

newdigital, 2014.04.09 14:23

Das Denken sollte verboten werden - es ist beleidigend!

Die Zeilen sind zu einem Gedicht gestrickt,
Das Meer leckt das trockene Land.
Kinder kacken in das Töpfchen,
♪ Adults poop in their souls ♪

Was ist aus der Bewertung geworden?
 
newdigital:

Ich habe meinen Beitrag hier überprüft - er hat sich nicht erhöht. Vielleicht gibt es eine clevere, verbesserte Formel...

Was ist aus der Bewertung geworden?
Es funktioniert), aber nein(
 
Zählen der Bewertungen für Forenbeiträge gestoppt (
Fehler , Website mql5.com , geschlossen , Initiative: 2014.04.09 14:07 , # 993171

Zählen der Bewertungen für Forenbeiträge gestoppt (



Selbsthilfegruppe2014.04.09 15:27
Wie kommst du darauf?
GriFFon4ik2014.04.09 17:38
Nun, früher hieß es "schriftlicher Kommentar, Bewertung sofort +1", aber jetzt gibt es kein "+1 sofort" mehr.
Selbsthilfegruppe2014.04.09 17:38

Die Bewertungen werden nun periodisch und mit einer Verzögerung vergeben