🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #2190

Re: vector, einige Fragen

#2190
From: Ralf W. Stephan
Date: Fri, 19 Apr 1996 10:53
53 lines
2600 bytes
Andreas Zierdt writes:
> ..."vector" im Sinne von C++ dieser Definition entspricht. Mein Eindruck ist
> das hier vector im Sinne von "objectorientiertes array" verwendet wird.
> Falls das stimmt, halte ich es für eine unglückliche Namensgebung. Die
> Frage lautet dann: wie sollte eine Klasse von "richtigen" Vektoren heißen?

Du gehst noch davon aus, daß es nur einmal den Namen 'vector' geben
kann.  Das ist aber durch 'namespace' viel besser geworden.  Siehe
dazu eins der neueren C++ Bücher oder den Draft-Standard.

> 2. Für meine Vector-Klasse habe ich folgende Konstruktoren definiert:
>     Vector(unsigned int dimension=3);
>     Vector(const Vector& v);
>     Vector(const Matrix<T>& Ma);
> Nun stellt sich die Frage, wie kann ich konstante Vektoren erzeugen?

Es ist etwas unklar, *warum* Du das haben willst.  Aber okay:

a) Vector temp(...)
   temp.init();
   const Vector EinheitsVektor = temp;
b) Oder Du leitest Klassen für spezielle Vektoren ab, das ist eh besser, 
   denn Du scheinst ja Vektoren für unterschiedliche Zwecke zu haben:
   class EinheitsVektor : public Vector
   {
     EinheitsVektor (int dimension=...);
     ...
   };
   const EinheitsVektor ev;

> "Vector(unsigned int dimension=3, double ...)"  in Frage. Die Verwendung der
> Ellipse ist aber nicht nur unschön, sie Verhindert auch die Verwendung einer
> Initialisiererliste im Konstruktor. (oder?)

Keine Ahnung, aber ich mag die Punkte auch nicht...  8)

> Eine Initialisiererliste ist aber erforderlich, wenn die Datenelemente als
> const deklariert werden, oder ist ein const Objekt mit nicht const Daten
> möglich/sinnvoll?

Warum machst Du denn die Elemente nicht privat?  Ein const Objekt
hat IMHO sowieso nur const Daten, anders geht es nicht.

> Alternative wäre eine eigene Klasse für jede Fehlerursache, nur kann ich dann 
> Vektor-Fehler nicht mehr mit einem catch() abfangen, sondern muß 5 oder 10
> verwenden. Oder ich gebe die Einbettung auf und verwende hierachische Fehler-
> klassen, dann geht aber die Datenkapselung verloren. 

Also, ich würde auf jeden Fall eine Hierarchie verwenden, d.h. jede
Exception von einer Basisexception-Klasse ableiten (s. <std/stdexcept.h>)


ralf
Technical Details
Message-ID: <1996Apr19.105315.125@ark.franken.de>
Path: arc1-ca.pugleaf.net!ark.franken.de!ralf
References: <4l5p8l$ol1@sparcserver.lrz-muenchen.de>

Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++
Path: arc1-ca.pugleaf.net!ark.franken.de!ralf
From: ralf@ark.franken.de (Ralf W. Stephan)
Subject: Re: vector, einige Fragen
Message-ID: <1996Apr19.105315.125@ark.franken.de>
Organization: his desk writing an article
Date: Fri, 19 Apr 1996 10:53:15 GMT
References: <4l5p8l$ol1@sparcserver.lrz-muenchen.de>
X-Newsreader: TIN [version 1.2 PL2]