Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

31

06.06.2016, 18:23

Dann vergiss ja den move/kopier Konstruktor/operator nicht :o

32

06.06.2016, 18:24

std hin oder her, warum muss man hier mit heap operationen arbeiten? Ein template Parameter der die Anzahl der Dimensionen entgegen nimmt und an ein internes Array übergibt, wäre definitiv die schönere Wahl. Tut mir leid, wenn das schon erwähnt wurde, hab das hier nur überflogen ;)

EDIT: Ich meinte hier nicht den Typ des Arrays (int, double,...) sondern die Größe!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »anti-freak« (06.06.2016, 18:50)


33

06.06.2016, 18:29

Falls es noch nicht erwähnt wurde: Templates benutzen!
:P

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

34

06.06.2016, 19:39

std hin oder her, warum muss man hier mit heap operationen arbeiten? Ein template Parameter der die Anzahl der Dimensionen entgegen nimmt und an ein internes Array übergibt, wäre definitiv die schönere Wahl.

Es ist halt nicht so, dass die Anzahl der Dimensionen eines Vektors immer zur Compilezeit bekannt sein muss...

MitgliedXYZ

Alter Hase

  • »MitgliedXYZ« ist der Autor dieses Themas

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

35

06.06.2016, 19:47

Wieso ist der Konstruktor gültig, wenn ich Templates verwende?
Ohne Template ist er ungültig, würde ohne eine Referenz als Übergabewert auch unlogisch sein.
Der richtige Konstruktor fehlt auch, so würde doch nie ein Objekt dieser Klasse erstellt werden können, oder?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef CVEKTOR_H
#define CVEKTOR_H

template <typename t>
class CVektor
{
public:
    CVektor(CVektor);
    ~CVektor();

    CVektor& operator=(const CVektor&);
    CVektor& operator+=(const CVektor&);
    CVektor& operator-=(const CVektor&);

    CVektor operator+(const CVektor&);
    CVektor operator-(const CVektor&);

    CVektor& operator-();

    bool operator==(const CVektor&);
    bool operator!=(const CVektor&);
    bool operator<(const CVektor&);
    bool operator>(const CVektor&);
    bool operator<=(const CVektor&);
    bool operator>=(const CVektor&);

    friend std::istream& operator>>(std::istream&, CVektor&);
    friend std::ostream& operator<<(std::ostream&, const CVektor&);

    double length() const;

private:
    int dim;
    t* pKomp;
};

#endif // !CVEKTOR_H

36

06.06.2016, 19:48

std hin oder her, warum muss man hier mit heap operationen arbeiten? Ein template Parameter der die Anzahl der Dimensionen entgegen nimmt und an ein internes Array übergibt, wäre definitiv die schönere Wahl.

Es ist halt nicht so, dass die Anzahl der Dimensionen eines Vektors immer zur Compilezeit bekannt sein muss...

Mag sein, dann fehlen hier dennoch 4 (mindestens 2) Parameter der rule of five.

EDIT: Ok, der TE scheint dem Ganzen in seinem letzten Post nachgekommen zu sein ;)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »anti-freak« (06.06.2016, 20:00)


Werbeanzeige