🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

vector, einige Fragen

#2178
From: Andreas Zierdt
Date: Thu, 18 Apr 1996 16:05
58 lines
3342 bytes
Für meine Arbeit an der Uni habe ich u.a. eine Klasse "Vector"
entwickelt; ich bin dabei auf verschiedene Probleme gestossen, die ich
hier in Form von drei Fragen zusammenfasse:

1. Ein Vektor im mathematischen Sinne ist ein Element einer Menge (des
Vektorraums), für die bestimmte Axiome erfüllt sind. In der Physik sind
das z.B. gerichtete Größen wie Kräfte, aber auch abstrakte Gebilde wie
Zustandsvektoren. Ich bin mir nun nicht sicher inwieweit der Begriff
"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?

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?
"Vector(unsigned int dimension=3)" erlaubt mir keine Startwerte vorzugeben
und eine spätere Zuweisung an const-Objekte ist ja nicht möglich. Da die
Dimension des Vektors unbekannt ist, käme nur etwas in der Form
"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?)
Eine Initialisiererliste ist aber erforderlich, wenn die Datenelemente als
const deklariert werden, oder ist ein const Objekt mit nicht const Daten
möglich/sinnvoll?

3. Für die Fehlerbehandlung verwende ich eine eingebettete Klasse:
   struct Vector_Error
   {
           Vector_Error(int n, const Vector& orig) : Nr(n), ErrOrigin(orig) {}
           int     Nr;
           const Vector&   ErrOrigin; 
   };
Dabei werden in "Nr" Fehlercodes abgelegt (Range, ect.) die im Fehlerhandler
wieder dekodiert werden müssen, was einen gewissen overhead erzeugt. Eine
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. 
Hier interessiert mich einfach mal, wie ihr es macht.

Gruß

az

P.S. Die OS-spezifischen und off-topic Beiträge haben wirklich unerträglich
  zugenommen, IMHO hilft da aber kein rumdirigieren, sondern es müssen wieder
  mehr C++ Themen gepostet werden. Im Augenblick könnte man ja glauben, dies
  ist eine Windows-Gruppe und dann kommen auch solche Beiträge. 

---
Andreas Zierdt,    Institut fuer Phonetik und sprachliche Kommunikation
                   Universitaet Muenchen, Schellingstr. 3
                   80799 Muenchen, Germany

E-mail: andi@sun1.phonetik.uni-muenchen.de                   
Technical Details
Message-ID: <4l5p8l$ol1@sparcserver.lrz-muenchen.de>
Path: arc1-ca.pugleaf.net!linux8.phonetik.uni-muenchen.de!andi

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!linux8.phonetik.uni-muenchen.de!andi
From: andi@linux8.phonetik.uni-muenchen.de (Andreas Zierdt)
Newsgroups: de.comp.lang.c++
Subject: vector, einige Fragen
Date: 18 Apr 1996 16:05:41 GMT
Organization: Phonetik
Distribution: world
Message-ID: <4l5p8l$ol1@sparcserver.lrz-muenchen.de>
Reply-To: andi@sun1.phonetik.uni-muenchen
NNTP-Posting-Host: linux8.phonetik.uni-muenchen.de
X-Newsreader: TIN [version 1.2 PL2]