Seite 1 von 7
C++ Tutorial
Verfasst: Mo Feb 01, 2021 5:00 pm
von Xeon
Hallo Xin
Ich möchte hier auf proggen.org mit dem C++ Tutorial starten.
Lässt du noch das C++ Tutorial drin?
Liebe Grüße
Xeon
Re: C++ Tutorial
Verfasst: Di Feb 02, 2021 11:28 am
von Xin
Warum sollte ich es rausnehmen... ich plane es neu zu schreiben, aber das wäre in einem anderen Namensraum und wenn das fertig (irgendwann) ist, dann kille ich das jetzige Tutorial.
Einige Teile werde ich übernehmen, aber ich werde einen anderen Ansatz probieren. Das jetzige geht ja noch eher 'traditionell' vor.
C++ Tutorial Objekte konstruieren
Verfasst: Di Mär 16, 2021 2:05 pm
von Xeon
Hallo zusammen
Hier der Link:
https://www.proggen.org/doku.php?id=cpp:class:construct
Folgenden Text verstehe ich nicht:
class Node
{
Node * Next;
Node * Prev;
List * Owner;
Data data;
Node( Node & previous );
};
Möchte man nun eine neue Node erzeugen und mit dem Konstruktor in die Liste einhängen, so lässt sich das programmieren, aber sobald eine Node kopiert werden soll, so wird die Kopie mit in die Liste eingehängt. Dies führt mit Garantie zu Problemen. Der Konstruktor, der den gleichen Typ als einziges Argument nimmt, muss als Kopierkonstruktor der Daten verwendet werden. Das bedeutet hier, dass die Daten kopiert werden müssen, und die Node selbst in keiner Liste eingehängt wird, damit wirklich nur kopiert wird und keine anderen Datenstrukturen verändert werden.
Kann mir jemand nur den Text erklären? Den Code nicht.
Liebe Grüße
Xeon
Re: C++ Tutorial Objekte konstruieren
Verfasst: Di Mär 16, 2021 2:16 pm
von Xin
Xeon hat geschrieben: ↑Di Mär 16, 2021 2:05 pm
Hallo zusammen
Hier der Link:
https://www.proggen.org/doku.php?id=cpp:class:construct
Folgenden Text verstehe ich nicht:
class Node
Möchte man nun eine neue Node erzeugen und mit dem Konstruktor in die Liste einhängen, so lässt sich das programmieren, aber sobald eine Node kopiert werden soll, so wird die Kopie mit in die Liste eingehängt. Dies führt mit Garantie zu Problemen. Der Konstruktor, der den gleichen Typ als einziges Argument nimmt, muss als Kopierkonstruktor der Daten verwendet werden. Das bedeutet hier, dass die Daten kopiert werden müssen, und die Node selbst in keiner Liste eingehängt wird, damit wirklich nur kopiert wird und keine anderen Datenstrukturen verändert werden.
Kann mir jemand nur den Text erklären? Den Code nicht.
Der Konstruktor, der automatisch eine Node hinter der als Parameter übergebenen anhängt, hat die gleiche Signatur wie der Copy-Constructor (auch wenn dieser in der Regel Point const & ist). Man kann also nicht unterscheiden, ob Node( otherNode ) jetzt otherNode in die Liste einhängt oder otherNode kopiert wird, wie man das vermutlich erwartet. Ein Konstruktor, der wie ein Copy-Construktor aussieht, aber keiner ist, widerspricht also der üblichen Erwartungen, weswegen man sowas besser anders löst.
Aber ich glaube, an den Text sollte ich nochmal ran.

C++ Tutorial Statische Member
Verfasst: Mi Mär 17, 2021 1:35 pm
von Xeon
Hallo Xin
Ich weiß nicht ob du den Fehler bewusst oder unbewusst gemacht hast, aber ich stelle mal den Code rein.
Hier der Link:
https://www.proggen.org/doku.php?id=cpp:class:static
Code: Alles auswählen
class Math
{
public:
static double PI = 3,14159265;
static double Circumference( double radius );
};
Bei der Kommazahl sollte ein Punk sein statt ein Komma.
Code: Alles auswählen
double Math::Circumference( double radius );
{
return 2 * PI * radius;
}
Beim Funktionskopf sollte kein Semikolon stehen.
Liebe Grüße
Xeon
Re: C++ Tutorial Statische Member
Verfasst: Mi Mär 17, 2021 6:05 pm
von Xin
Xeon hat geschrieben: ↑Mi Mär 17, 2021 1:35 pm
Ich weiß nicht ob du den Fehler bewusst oder unbewusst gemacht hast, aber ich stelle mal den Code rein.
Ich bin bemüht, Fehler ausschließlich unbewusst zu machen.
Xeon hat geschrieben: ↑Mi Mär 17, 2021 1:35 pm
Hier der Link:
Beide Fehler korrigiert, vielen Dank!

C++ Tutorial - Referenzen als Member
Verfasst: Mi Mär 31, 2021 4:01 pm
von Xeon
Hallo zusammen
Bin nun hier angelangt:
https://www.proggen.org/doku.php?id=cpp:ref:member
Ich habe alles abgetippt unten, doch leider will der Compiler nicht übersetzen. Hier mal der Code:
Die main Funktion:
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
#include "rect.h"
int main()
{
Rectangle * myRect;
Point topLeft( 1, 2 );
Point bottomRight( 3, 4 );
myRect = new Rectangle( topLeft, bottomRight );
myRect->Print( "myRect" );
delete myRect;
return 0;
}
Headerdatei rect.h:
Code: Alles auswählen
#ifndef RECT_H_INCLUDED
#define RECT_H_INCLUDED
#include "point.h"
class Rectangle
{
public:
Point & TopLeft;
Point & BottomRight;
Rectangle( int left, int top, int width, int height );
void Print( char const * prefix );
};
Rectangle( Point & topLeft, Point & bottomRight );
#endif // RECT_H_INCLUDED
Headerdatei point.h:
Code: Alles auswählen
#ifndef POINT_H_INCLUDED
#define POINT_H_INCLUDED
class Point
{
public:
int XPosition;
int YPosition;
Point();
Point( int x, int y );
void Print( char const * prefix );
};
#endif // POINT_H_INCLUDED
rect.cpp:
Code: Alles auswählen
#include <stdio.h>
#include "rect.h"
Rectangle::Rectangle( Point & topLeft, Point & bottomRight )
: TopLeft( topLeft )
, BottomRight( bottomRight )
{
printf( "Rectangle-Konstruktor\n" );
}
void Rectangle::Print( char const * prefix )
{
printf( "Rectangle %s contains: \n", prefix );
TopLeft.Print( "topleft" );
BottomRight.Print( "bottomRight" );
}
point.cpp
Code: Alles auswählen
#include <stdio.h>
#include "point.h"
Point::Point() // Default-Konstruktor
: XPosition(0)
, YPosition(0)
{
printf( "Point: Default-Konstruktor\n" );
}
Point::Point( int x, int y )
: XPosition( x )
, YPosition( y )
{
printf( "Point: Konstruktor setzt Werte auf %d/%d\n", x, y );
}
void Point::Print( char const * prefix )
{
printf( "%s: %d/%d\n", prefix, XPosition, YPosition );
}
Re: C++ Tutorial - Referenzen als Member
Verfasst: Mi Mär 31, 2021 4:42 pm
von Xin
Xeon hat geschrieben: ↑Mi Mär 31, 2021 4:01 pm
Ich habe alles abgetippt unten, doch leider will der Compiler nicht übersetzen.
...sondern er gibt folgende Fehlermeldung raus...? ^^
Ich habe den Text der Seite etwas angepasst. Du hast den geänderten Konstruktor unter die Klasse Rect kopiert. Der Konstruktor muss schon in der Klasse stehen. Die geänderten Konstruktoren ersetzen die vorherige Variante.
Re: C++ Tutorial
Verfasst: Mo Apr 05, 2021 2:36 pm
von Xeon
Xin hat geschrieben:
Ich habe den Text der Seite etwas angepasst. Du hast den geänderten Konstruktor unter die Klasse Rect kopiert. Der Konstruktor muss schon in der Klasse stehen. Die geänderten Konstruktoren ersetzen die vorherige Variante.
Ich habe es jetzt so gemacht wie du geschrieben hast:
Code: Alles auswählen
class Rectangle
{
public:
Point & TopLeft;
Point & BottomRight;
Rectangle( Point & topLeft, Point & bottomRight );
void Print( char const * prefix );
};
Danke Xin, jetzt geht es wunderbar!
C++ Tutorial - Dynamisch Referenzen erzeugen
Verfasst: Di Apr 06, 2021 2:55 pm
von Xeon
Hallo zusammen
Ich schon wieder. Bin hier angelangt:
https://www.proggen.org/doku.php?id=cpp:ref:new
Folgenden Text verstehe ich nicht:
NULL-Pointer mit Referenzen ersetzen
Da man keinen Nullpointer an eine Referenz übergeben darf, wird gelegentlich mit Null-Instanzen gearbeitet. Dies ist eine Instanz der gewünschten Klasse, dass jedoch keine Funktion besitzt. Meist ist es ein statischer Member der Klasse, dessen (virtuelle) Funktionen beispielsweise so überschrieben sein können, dass sie keine Handlung mehr vornehmen. Die Null-Instanz kann so als Marker dienen, um sich von gültigen Instanzen zu unterscheiden. Wird eine Funktion des Markers gerufen, geschieht nichts.
Was ist denn eine virtuelle Funktion?
Liebe Grüße
Xeon