<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Noch eine Frage zu enum]]></title><description><![CDATA[<p>Ich habe hier 2 Klassen Point3D und Vector3D. Beide haben ja die gleiche Anzahl von Elementen, nämlich 3. Wie kann ich hier ein enum erstellen welches nur diese beiden Klassen kennen und auch den friend operatoren bekannt ist?</p>
<p>Mein Problem ist, wenn ich die enums wie hier definiere können die überladenen friend-operatoren nicht darauf zugreifen.</p>
<p>Klasse Point3D</p>
<pre><code class="language-cpp">#ifndef POINT3D_H_
#define POINT3D_H_

template&lt;class T&gt; class Point3D {

    private:
        //-(Variablen)----------------------------------------------------------
        T n[3]; // x, y, z
        enum {X, Y, Z};

    public:

        //-(Konstruktoren)------------------------------------------------------
        inline Point3D(); // Punkt mit (0,0,0)
        ...
};
#endif
</code></pre>
<p>Klasse Vector3D</p>
<pre><code class="language-cpp">#ifndef VECTOR3D_H_
#define VECTOR3D_H_

#include &quot;point3d.h&quot;

template&lt;class T&gt; class Vector3D {

    private:
        //-(Variablen)----------------------------------------------------------
        T n[3]; // x, y, z
        enum {X, Y, Z};

    public:

        //-(Konstruktoren)------------------------------------------------------
        inline Vector3D(); // Vektor mit (0,0,0)
        inline Vector3D(const T x, const T y, const T z); // Vektor mit (x,y,z)
        inline Vector3D(const Vector3D&lt;T&gt;&amp; v); // Vektor mit (v.x, v.y, v.z)
        inline Vector3D(const Point3D&lt;T&gt; a, const Point3D&lt;T&gt; b); // Erstellt einen Vektor der von a nach b zeigt.

        //-(Überladene Operatoren)----------------------------------------------
        inline T&amp; operator[] (int i);
        inline T operator[] (int i) const;

        inline Vector3D&lt;T&gt; operator+=(Vector3D&lt;T&gt; v);
        inline Vector3D&lt;T&gt; operator-=(Vector3D&lt;T&gt; v);
        inline Vector3D&lt;T&gt; operator*=(T s);
        inline Vector3D&lt;T&gt; operator/=(T s);

        inline Vector3D&lt;T&gt; operator+(); // keine notwendige Funktion
        inline Vector3D&lt;T&gt; operator-(); // Invertierung

        friend Vector3D&lt;T&gt; operator+  &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);
        friend Vector3D&lt;T&gt; operator-  &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);
        friend Vector3D&lt;T&gt; operator*  &lt;&gt;(T s, Vector3D&lt;T&gt; v);
        friend Vector3D&lt;T&gt; operator*  &lt;&gt;(Vector3D&lt;T&gt; v, T s);
        friend Vector3D&lt;T&gt; operator/  &lt;&gt;(Vector3D&lt;T&gt; v, T s);
        friend T           operator*  &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);
        friend Vector3D&lt;T&gt; operator^  &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);

        friend bool        operator== &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);
        friend bool        operator!= &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);

        //-(Methoden)-----------------------------------------------------------
        inline T* array(void) const; // Gibt einen Pointer auf das Array zurück
        inline T norm(void) const; // Berechnet die Norm |x²+y²+z²|
        inline T length(void) const; // Berechnet die Länge sqrt(x²+y²+z²)

};

#include &quot;vector3d.cpp&quot; // wegen eines Templatebugs in verschiedenen Compilern.

#endif // VECTOR3D_H_
</code></pre>
<pre><code class="language-cpp">#ifndef VECTOR3D_CPP_
#define VECTOR3D_CPP_

#include &lt;math.h&gt;
#include &quot;vector3d.h&quot;

enum {X,Y,Z};

//--(Konstruktoren)-------------------------------------------------------------

template&lt;class T&gt; inline Vector3D&lt;T&gt;::Vector3D() {
    n[Z] = n[Y] = n[X] = 0;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt;::Vector3D(const T x, const T y, const T z) {
    n[X] = x;
    n[Y] = y;
    n[Z] = z;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt;::Vector3D(const Vector3D&lt;T&gt;&amp; v) {
    n[X] = v.n[X];
    n[Y] = v.n[Y];
    n[Z] = v.n[Z];
}

template&lt;class T&gt; inline Vector3D&lt;T&gt;::Vector3D(const Point3D&lt;T&gt; a, const Point3D&lt;T&gt; b) {
    n[X] = b[X] - a[X];
    n[Y] = b[Y] - a[Y];
    n[Z] = b[Z] - a[Z];
}

//--(Überladene Operatoren)-----------------------------------------------------

template&lt;class T&gt; inline T&amp; Vector3D&lt;T&gt;::operator[] (int i) {
    return n[i];
}

template&lt;class T&gt; inline T Vector3D&lt;T&gt;::operator[] (int i) const {
    return n[i];
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator+=(Vector3D&lt;T&gt; v) {
    n[X] += v[X];
    n[Y] += v[Y];
    n[Z] += v[Z];
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator-=(Vector3D&lt;T&gt; v) {
    n[X] -= v[X];
    n[Y] -= v[Y];
    n[Z] -= v[Z];
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator*=(T s) {
    n[X] *= s;
    n[Y] *= s;
    n[Z] *= s;
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator/=(T s) {
    T inv = 1.0 / s;
    n[X] *= inv;
    n[Y] *= inv;
    n[Z] *= inv;
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator+() {
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator-() {
    return Vector3D&lt;T&gt;(-x, -y, -z);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator+ (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return Vector3D&lt;T&gt;(a[X]+b[X], a[Y]+b[Y], a[Z]+b[Z]);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator- (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return Vector3D&lt;T&gt;(a[X]-b[X], a[Y]-b[Y], a[Z]-b[Z]);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator* (T s, Vector3D&lt;T&gt; v) {
    return Vector3D&lt;T&gt;(s*v[X], s*v[Y], s*v[Z]);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator* (Vector3D&lt;T&gt; v, T s) {
    return Vector3D&lt;T&gt;(s*v[X], s*v[Y], s*v[Z]);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator/ (Vector3D&lt;T&gt; v, T s) {
    T inv = 1/s;
    return Vector3D&lt;T&gt;(inv*v[X], inv*v[Y], inv*v[Z]);
}

template&lt;class T&gt; inline T operator* (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return a[X]*b[X] + a[Y]*b[Y] + a[Z]*b[Z];
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator^ (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return Vector3D&lt;T&gt;(a[Y]*b[Z] - a[Z]*b[Y],
                       a[Z]*b[X] - a[X]*b[Z],
                       a[X]*b[Y] - a[Y]*b[X]);
}

template&lt;class T&gt; inline bool operator== (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return a[X] == b[X] &amp;&amp; a[Y] == b[Y] &amp;&amp; a[Z] == b[Z];
}

template&lt;class T&gt; inline bool operator!= (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return a[X] != b[X] || a[Y] != b[Y] || a[Z] != b[Z];
}

//--(Funktionen)----------------------------------------------------------------

template&lt;class T&gt; inline T* Vector3D&lt;T&gt;::array(void) const {
    return n;
}

template&lt;class T&gt; inline T Vector3D&lt;T&gt;::norm(void) const {
    return n[X]*n[X] + n[Y]*n[Y] + n[Z]*n[Z];
}

template&lt;class T&gt; inline T Vector3D&lt;T&gt;::length(void) const {
    return sqrt(norm());
}

#endif // VECTOR3D_CPP_
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/123940/noch-eine-frage-zu-enum</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 18:31:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/123940.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Oct 2005 15:16:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Noch eine Frage zu enum on Fri, 21 Oct 2005 15:16:51 GMT]]></title><description><![CDATA[<p>Ich habe hier 2 Klassen Point3D und Vector3D. Beide haben ja die gleiche Anzahl von Elementen, nämlich 3. Wie kann ich hier ein enum erstellen welches nur diese beiden Klassen kennen und auch den friend operatoren bekannt ist?</p>
<p>Mein Problem ist, wenn ich die enums wie hier definiere können die überladenen friend-operatoren nicht darauf zugreifen.</p>
<p>Klasse Point3D</p>
<pre><code class="language-cpp">#ifndef POINT3D_H_
#define POINT3D_H_

template&lt;class T&gt; class Point3D {

    private:
        //-(Variablen)----------------------------------------------------------
        T n[3]; // x, y, z
        enum {X, Y, Z};

    public:

        //-(Konstruktoren)------------------------------------------------------
        inline Point3D(); // Punkt mit (0,0,0)
        ...
};
#endif
</code></pre>
<p>Klasse Vector3D</p>
<pre><code class="language-cpp">#ifndef VECTOR3D_H_
#define VECTOR3D_H_

#include &quot;point3d.h&quot;

template&lt;class T&gt; class Vector3D {

    private:
        //-(Variablen)----------------------------------------------------------
        T n[3]; // x, y, z
        enum {X, Y, Z};

    public:

        //-(Konstruktoren)------------------------------------------------------
        inline Vector3D(); // Vektor mit (0,0,0)
        inline Vector3D(const T x, const T y, const T z); // Vektor mit (x,y,z)
        inline Vector3D(const Vector3D&lt;T&gt;&amp; v); // Vektor mit (v.x, v.y, v.z)
        inline Vector3D(const Point3D&lt;T&gt; a, const Point3D&lt;T&gt; b); // Erstellt einen Vektor der von a nach b zeigt.

        //-(Überladene Operatoren)----------------------------------------------
        inline T&amp; operator[] (int i);
        inline T operator[] (int i) const;

        inline Vector3D&lt;T&gt; operator+=(Vector3D&lt;T&gt; v);
        inline Vector3D&lt;T&gt; operator-=(Vector3D&lt;T&gt; v);
        inline Vector3D&lt;T&gt; operator*=(T s);
        inline Vector3D&lt;T&gt; operator/=(T s);

        inline Vector3D&lt;T&gt; operator+(); // keine notwendige Funktion
        inline Vector3D&lt;T&gt; operator-(); // Invertierung

        friend Vector3D&lt;T&gt; operator+  &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);
        friend Vector3D&lt;T&gt; operator-  &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);
        friend Vector3D&lt;T&gt; operator*  &lt;&gt;(T s, Vector3D&lt;T&gt; v);
        friend Vector3D&lt;T&gt; operator*  &lt;&gt;(Vector3D&lt;T&gt; v, T s);
        friend Vector3D&lt;T&gt; operator/  &lt;&gt;(Vector3D&lt;T&gt; v, T s);
        friend T           operator*  &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);
        friend Vector3D&lt;T&gt; operator^  &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);

        friend bool        operator== &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);
        friend bool        operator!= &lt;&gt;(Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b);

        //-(Methoden)-----------------------------------------------------------
        inline T* array(void) const; // Gibt einen Pointer auf das Array zurück
        inline T norm(void) const; // Berechnet die Norm |x²+y²+z²|
        inline T length(void) const; // Berechnet die Länge sqrt(x²+y²+z²)

};

#include &quot;vector3d.cpp&quot; // wegen eines Templatebugs in verschiedenen Compilern.

#endif // VECTOR3D_H_
</code></pre>
<pre><code class="language-cpp">#ifndef VECTOR3D_CPP_
#define VECTOR3D_CPP_

#include &lt;math.h&gt;
#include &quot;vector3d.h&quot;

enum {X,Y,Z};

//--(Konstruktoren)-------------------------------------------------------------

template&lt;class T&gt; inline Vector3D&lt;T&gt;::Vector3D() {
    n[Z] = n[Y] = n[X] = 0;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt;::Vector3D(const T x, const T y, const T z) {
    n[X] = x;
    n[Y] = y;
    n[Z] = z;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt;::Vector3D(const Vector3D&lt;T&gt;&amp; v) {
    n[X] = v.n[X];
    n[Y] = v.n[Y];
    n[Z] = v.n[Z];
}

template&lt;class T&gt; inline Vector3D&lt;T&gt;::Vector3D(const Point3D&lt;T&gt; a, const Point3D&lt;T&gt; b) {
    n[X] = b[X] - a[X];
    n[Y] = b[Y] - a[Y];
    n[Z] = b[Z] - a[Z];
}

//--(Überladene Operatoren)-----------------------------------------------------

template&lt;class T&gt; inline T&amp; Vector3D&lt;T&gt;::operator[] (int i) {
    return n[i];
}

template&lt;class T&gt; inline T Vector3D&lt;T&gt;::operator[] (int i) const {
    return n[i];
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator+=(Vector3D&lt;T&gt; v) {
    n[X] += v[X];
    n[Y] += v[Y];
    n[Z] += v[Z];
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator-=(Vector3D&lt;T&gt; v) {
    n[X] -= v[X];
    n[Y] -= v[Y];
    n[Z] -= v[Z];
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator*=(T s) {
    n[X] *= s;
    n[Y] *= s;
    n[Z] *= s;
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator/=(T s) {
    T inv = 1.0 / s;
    n[X] *= inv;
    n[Y] *= inv;
    n[Z] *= inv;
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator+() {
    return *this;
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; Vector3D&lt;T&gt;::operator-() {
    return Vector3D&lt;T&gt;(-x, -y, -z);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator+ (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return Vector3D&lt;T&gt;(a[X]+b[X], a[Y]+b[Y], a[Z]+b[Z]);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator- (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return Vector3D&lt;T&gt;(a[X]-b[X], a[Y]-b[Y], a[Z]-b[Z]);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator* (T s, Vector3D&lt;T&gt; v) {
    return Vector3D&lt;T&gt;(s*v[X], s*v[Y], s*v[Z]);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator* (Vector3D&lt;T&gt; v, T s) {
    return Vector3D&lt;T&gt;(s*v[X], s*v[Y], s*v[Z]);
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator/ (Vector3D&lt;T&gt; v, T s) {
    T inv = 1/s;
    return Vector3D&lt;T&gt;(inv*v[X], inv*v[Y], inv*v[Z]);
}

template&lt;class T&gt; inline T operator* (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return a[X]*b[X] + a[Y]*b[Y] + a[Z]*b[Z];
}

template&lt;class T&gt; inline Vector3D&lt;T&gt; operator^ (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return Vector3D&lt;T&gt;(a[Y]*b[Z] - a[Z]*b[Y],
                       a[Z]*b[X] - a[X]*b[Z],
                       a[X]*b[Y] - a[Y]*b[X]);
}

template&lt;class T&gt; inline bool operator== (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return a[X] == b[X] &amp;&amp; a[Y] == b[Y] &amp;&amp; a[Z] == b[Z];
}

template&lt;class T&gt; inline bool operator!= (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return a[X] != b[X] || a[Y] != b[Y] || a[Z] != b[Z];
}

//--(Funktionen)----------------------------------------------------------------

template&lt;class T&gt; inline T* Vector3D&lt;T&gt;::array(void) const {
    return n;
}

template&lt;class T&gt; inline T Vector3D&lt;T&gt;::norm(void) const {
    return n[X]*n[X] + n[Y]*n[Y] + n[Z]*n[Z];
}

template&lt;class T&gt; inline T Vector3D&lt;T&gt;::length(void) const {
    return sqrt(norm());
}

#endif // VECTOR3D_CPP_
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/897945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/897945</guid><dc:creator><![CDATA[Tobain]]></dc:creator><pubDate>Fri, 21 Oct 2005 15:16:51 GMT</pubDate></item><item><title><![CDATA[Reply to Noch eine Frage zu enum on Fri, 21 Oct 2005 15:24:26 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">template&lt;class T&gt; inline Vector3D&lt;T&gt; operator+ (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) { 
    return Vector3D&lt;T&gt;(a[X]+b[X], a[Y]+b[Y], a[Z]+b[Z]); 
}
</code></pre>
</blockquote>
<p>Es gibt kein globales X, Y, Z, also wird er es hier auch nicht finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<pre><code class="language-cpp">template&lt;class T&gt; inline Vector3D&lt;T&gt; operator+ (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) { 
    return Vector3D&lt;T&gt;(a[Vector3D&lt;T&gt;::X]+b[Vector3D&lt;T&gt;::X], a[Vector3D&lt;T&gt;::Y]+b[Vector3D&lt;T&gt;::Y], a[Vector3D&lt;T&gt;::Z]+b[Vector3D&lt;T&gt;::Z]); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/897961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/897961</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Fri, 21 Oct 2005 15:24:26 GMT</pubDate></item><item><title><![CDATA[Reply to Noch eine Frage zu enum on Fri, 21 Oct 2005 15:30:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;class T&gt; inline Vector3D&lt;T&gt; operator+ (Vector3D&lt;T&gt; a, Vector3D&lt;T&gt; b) {
    return Vector3D&lt;T&gt;(a[Vector3D&lt;T&gt;::X]+b[Vector3D&lt;T&gt;::X], a[Vector3D&lt;T&gt;::Y]+b[Vector3D&lt;T&gt;::Y], a[Vector3D&lt;T&gt;::Z]+b[Vector3D&lt;T&gt;::Z]);
}
</code></pre>
<p>Genau um diese Schreibweise wollte ich eigentlich auch drum herumkommen, denn dies wird bei manchen Funktionen ein riesiger Auffwand. Irgendwelche Ideen dazu?</p>
<p>Eigentlich wollte ich mir hier nur eine Umschreibung von n[0]≡n[X],... einfallen lassen, welche für genau die beiden *.cpp Dateien gilt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/897970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/897970</guid><dc:creator><![CDATA[Tobain]]></dc:creator><pubDate>Fri, 21 Oct 2005 15:30:34 GMT</pubDate></item><item><title><![CDATA[Reply to Noch eine Frage zu enum on Fri, 21 Oct 2005 15:54:46 GMT]]></title><description><![CDATA[<p>auch wenn's nicht besonders elegant ist, was spricht gegen</p>
<pre><code class="language-cpp">#define X 0
...
#undef X
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/898001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/898001</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Oct 2005 15:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to Noch eine Frage zu enum on Fri, 21 Oct 2005 19:21:06 GMT]]></title><description><![CDATA[<p>Das war jetzt zum Schluss auch mein Gedanke :p<br />
Ich denke ich werde es so machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/898184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/898184</guid><dc:creator><![CDATA[Tobain]]></dc:creator><pubDate>Fri, 21 Oct 2005 19:21:06 GMT</pubDate></item><item><title><![CDATA[Reply to Noch eine Frage zu enum on Sat, 22 Oct 2005 06:52:52 GMT]]></title><description><![CDATA[<p>du kannst auch Vector3D von Point3D ableiten und das enum in Point3D protected deklarieren. dann erledigt sich das problem von selbst. außerdem könnte dann Vector3D etwa die vergleichsoperatoren erben. da sparst du auch noch programmieraufwand. für was gibts denn schließlich oop <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/898439</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/898439</guid><dc:creator><![CDATA[Konfusius]]></dc:creator><pubDate>Sat, 22 Oct 2005 06:52:52 GMT</pubDate></item><item><title><![CDATA[Reply to Noch eine Frage zu enum on Sat, 22 Oct 2005 07:45:08 GMT]]></title><description><![CDATA[<blockquote>
<p>du kannst auch Vector3D von Point3D ableiten und das enum in Point3D protected deklarieren. dann erledigt sich das problem von selbst. außerdem könnte dann Vector3D etwa die vergleichsoperatoren erben. da sparst du auch noch programmieraufwand. für was gibts denn schließlich oop</p>
</blockquote>
<p>Durch die Ableitung existiert <strong>global</strong>, also außerhalb der Klassen, da wo eben die nicht-Member-Operatoren definiert werden, immernoch kein X, Y, oder Z.<br />
Außerdem hat das ganze dann mit OOP nicht mehr viel zu tun, denn ein Vektor ist kein Punkt!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/898456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/898456</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Sat, 22 Oct 2005 07:45:08 GMT</pubDate></item></channel></rss>