<?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[Objekt von Struktur in fremder Klasse definieren?]]></title><description><![CDATA[<p>Hey Leute,<br />
ich hab ein kleines Problem. Und zwar habe ich einen stinknormalen Vektor. Davon lege ich ein neues Objekt in einer anderen, fremnden Klasse an. Soweit so gut, nun zickt er nun mit Syntaxfehler etc. rum, sprich:</p>
<pre><code class="language-cpp">struct Vector_3
{
public:
	float x;
	float y;
	float z;
};

class Bezier
{
private:
	float var1;
	float var2;
	float var3;

public:
	Bezier();
	~Bezier();

	Vector_3 start_Point;
	Vector_3 step_Point;
	Vector_3 end_Point;

	Vector_3 test;
	Vector_3 Curve(Vector_3 P_0, Vector_3 P_1, Vector_3 P_2, float t);
	void DrawBezier(float lineWidth, float max_step);
};
</code></pre>
<p>So geht's, nur möchte ich start_Point jetzt die Werte zuweisen, und zwar so:</p>
<pre><code class="language-cpp">Vector_3 start_Point={4,2,6};
</code></pre>
<p>Angeblich Syntaxfehler.<br />
Komisch nur, dass wenn ich die Objekte außerhalb der Klasse deklariere, es wunderbar funktioniert, ich allerdings wieder Probleme bekomme, diese Objekte in Methoden von anderen Klassen zu integrieren. Bin noch etwsas verwirrtk, hoffe es hat trotzdem einer verstanden, ich danke vielmals im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230201/objekt-von-struktur-in-fremder-klasse-definieren</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 10:41:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230201.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 22 Dec 2008 12:04:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 12:04:41 GMT]]></title><description><![CDATA[<p>Hey Leute,<br />
ich hab ein kleines Problem. Und zwar habe ich einen stinknormalen Vektor. Davon lege ich ein neues Objekt in einer anderen, fremnden Klasse an. Soweit so gut, nun zickt er nun mit Syntaxfehler etc. rum, sprich:</p>
<pre><code class="language-cpp">struct Vector_3
{
public:
	float x;
	float y;
	float z;
};

class Bezier
{
private:
	float var1;
	float var2;
	float var3;

public:
	Bezier();
	~Bezier();

	Vector_3 start_Point;
	Vector_3 step_Point;
	Vector_3 end_Point;

	Vector_3 test;
	Vector_3 Curve(Vector_3 P_0, Vector_3 P_1, Vector_3 P_2, float t);
	void DrawBezier(float lineWidth, float max_step);
};
</code></pre>
<p>So geht's, nur möchte ich start_Point jetzt die Werte zuweisen, und zwar so:</p>
<pre><code class="language-cpp">Vector_3 start_Point={4,2,6};
</code></pre>
<p>Angeblich Syntaxfehler.<br />
Komisch nur, dass wenn ich die Objekte außerhalb der Klasse deklariere, es wunderbar funktioniert, ich allerdings wieder Probleme bekomme, diese Objekte in Methoden von anderen Klassen zu integrieren. Bin noch etwsas verwirrtk, hoffe es hat trotzdem einer verstanden, ich danke vielmals im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634006</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634006</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Dec 2008 12:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 12:13:11 GMT]]></title><description><![CDATA[<p>mach halt n konstruktod</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634012</guid><dc:creator><![CDATA[Titel_ N]]></dc:creator><pubDate>Mon, 22 Dec 2008 12:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 12:14:26 GMT]]></title><description><![CDATA[<p>Hab ich auch schon ausprobiert, aber wenn ich dann im Konstruktor &quot;start_Point={4,5,3};&quot; stehen hab, meckert er auch rum, dass ist das Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634013</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Dec 2008 12:14:26 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 12:19:59 GMT]]></title><description><![CDATA[<p>Du kannst Member nur im Konstruktor initialisieren, nicht in der Klasse selbst.</p>
<p>Was Titel_N meinte: Erstelle einen Konstruktor für Vector_3, der drei Parameter übernimmt, und initialisiere Objekte davon über diesen Konstruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634017</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 22 Dec 2008 12:19:59 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 12:48:23 GMT]]></title><description><![CDATA[<p>Ah ok, alles klar. Und wie lege ich dann ein neues Objekt an?</p>
<pre><code class="language-cpp">Vector start_Point(1,3,2);
</code></pre>
<p>oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634035</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Dec 2008 12:48:23 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 13:21:16 GMT]]></title><description><![CDATA[<p>way schrieb:</p>
<blockquote>
<p>Ah ok, alles klar. Und wie lege ich dann ein neues Objekt an?</p>
<pre><code class="language-cpp">Vector start_Point(1,3,2);
</code></pre>
<p>oder wie?</p>
</blockquote>
<p>Nach deiner Klassenbenennung:</p>
<pre><code class="language-cpp">Vector_3 objektname(1,3,2);
</code></pre>
<p>Wobei ich eher glaube, das du ein anderes Verständnisproblem (nämlich Memberinitialisierung) hast.</p>
<p>Eine Membervariable initialisiert man entweder in der Initialisierungsliste über den Namen, und anschließend den Konstruktoraufruf:</p>
<pre><code class="language-cpp">Bezier()
:   start_Point(1,2,3),
    step_Point(2,3,4)//...
{
}
</code></pre>
<p>Oder später durch Zuweisung (Zuweisungsoperator) über den Namen:</p>
<pre><code class="language-cpp">// Rumpf irgendeiner Memberfunktion...
start_Point = Vector_3(1,2,3);
</code></pre>
<p>In beiden Fällen steht &quot;Vector_3&quot; nicht davor, sonst hättest du eine lokale Variable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634058</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 22 Dec 2008 13:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 14:15:56 GMT]]></title><description><![CDATA[<p>Ok, hab's mal so gemacht wie du meintest.<br />
In der Methode hab ich:</p>
<pre><code class="language-cpp">Vector start_Point(2,3,4);
</code></pre>
<p>Funzt auch soweit alles. Nur hab ich jetzt ein Problem, er sagt mir direkt es wäre eine typenneudefinition.</p>
<pre><code>error C2011: 'Vector': 'class' Typneudefinition
</code></pre>
<p>Hm, ich definiere aber garnichts, was tun?</p>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634098</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Dec 2008 14:15:56 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 14:34:34 GMT]]></title><description><![CDATA[<p>way schrieb:</p>
<blockquote>
<p>Ok, hab's mal so gemacht wie du meintest.<br />
In der Methode hab ich:</p>
<pre><code class="language-cpp">Vector start_Point(2,3,4);
</code></pre>
<p>Funzt auch soweit alles. Nur hab ich jetzt ein Problem, er sagt mir direkt es wäre eine typenneudefinition.</p>
<pre><code>error C2011: 'Vector': 'class' Typneudefinition
</code></pre>
<p>Hm, ich definiere aber garnichts, was tun?</p>
</blockquote>
<p>Hieß die Klasse bei dir nicht Vector_3 ?<br />
Gib ma bissl mehr Code... (Die Klasse + CTor)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634117</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 22 Dec 2008 14:34:34 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 15:31:13 GMT]]></title><description><![CDATA[<p>Ok ok, ich rück ja schon raus:<br />
Vektor: (Auch Vektor_3)</p>
<pre><code class="language-cpp">class Vector
{
 public:
	 Vector() {};

	 float x, y, z;

		Vector(float new_x, float new_y, float new_z);

		Vector operator+(const Vector &amp;vector)
		{
			return Vector(vector.x+x, vector.y+y, vector.z+z);
		}

		Vector operator-(const Vector &amp;vector)
		{
			return Vector(x-vector.x, y-vector.y, z-vector.z);
		}

		Vector operator*(const float number)
		{
			return Vector(x*number, y*number, z*number);
		}

		Vector operator/(const float number)
		{
			return Vector(x/number, y/number, z/number);
		}
	};
</code></pre>
<p>Bezier-Klasse.h:</p>
<pre><code class="language-cpp">#include &quot;Vector.h&quot;

class Bezier
{
private:
	float var1;
	float var2;
	float var3;

public:
	Bezier();
	~Bezier();

	Vector Curve(Vector P_0, Vector P_1, Vector P_2, float t);
	void DrawBezier(float lineWidth, float max_step);
};
</code></pre>
<p>Bezier-Klasse.cpp:</p>
<pre><code class="language-cpp">void Bezier::DrawBezier(float lineWidth, float max_step)
{
	Vector start_Point(-4,0,0);
	Vector step_Point(-2,0,0);
	Vector end_Point(4,0,0);
	glPushMatrix();

	glBegin(GL_LINE_STRIP);
	glLineWidth(lineWidth);
	glColor3f(0.0f,1.0f,0.0f);

	for(float s=0; s &lt; 1+(1.0f/max_step); s+=1.0f/max_step)
	{
		Vector vPoint = Curve(start_Point,step_Point,end_Point,s);
		glVertex3f(vPoint.x,vPoint.y,vPoint.z);
	}
};
</code></pre>
<p>Danke im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634158</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Dec 2008 15:31:13 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 16:13:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">Vector(float new_x, float new_y, float new_z);
</code></pre>
<p>hab ich keine definition zu gesehen!?</p>
<pre><code class="language-cpp">Vector operator+(const Vector &amp;vector)
        {
            return Vector(vector.x+x, vector.y+y, vector.z+z);
        }

        Vector operator-(const Vector &amp;vector)
        {
            return Vector(x-vector.x, y-vector.y, z-vector.z);
        }

        Vector operator*(const float number)
        {
            return Vector(x*number, y*number, z*number);
        }

        Vector operator/(const float number)
        {
            return Vector(x/number, y/number, z/number);
        }
</code></pre>
<p>Üblicherweise deklariert man die Operatoren global und nutzt dabei +=, -=, ... (die als memberfunktionen deklariert wurden)<br />
-= implementiert man dann auch oft als += -rhs (also noch das unary minus (als member) hinzufügen)...</p>
<pre><code class="language-cpp">Vector Curve(Vector P_0, Vector P_1, Vector P_2, float t);
//=&gt;
Vector Curve(const Vector &amp;P_0, const Vector &amp;P_1, const Vector &amp;P_2, float t);
</code></pre>
<pre><code class="language-cpp">#include &quot;Vector.h&quot;

class Bezier /*...*/
</code></pre>
<p>Reicht hier kein <code>class Vector;</code> ?</p>
<pre><code class="language-cpp">/*Bezier-Klasse.cpp*/
#include &quot;Bezier.h&quot;
#include &quot;Vector.h&quot;

void Bezier::DrawBezier(float lineWidth, float max_step)
{
    Vector start_Point(-4,0,0); //sollte eigtl gehen
/*...*/
}
</code></pre>
<p>btw: Ich hoffe, du hast die include-guards nicht vergessen, sonst bekommst du dann haufen fehlermeldungen vom linker...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634184</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 22 Dec 2008 16:13:47 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 16:17:55 GMT]]></title><description><![CDATA[<p>way schrieb:</p>
<blockquote>
<p>Ok ok, ich rück ja schon raus:</p>
</blockquote>
<p>1. Ich hoffe deine Header besitzen Includeguards</p>
<p>2. Solltest du Deklaration/Implementierung sauber trennen (Header/Source)<br />
Und dies ist auch inkonsequent umgesetzt; So implementierst du nahezu alle Memberfunktionen in der Klasse, aber &quot;Vector(float new_x, float new_y, float new_z)&quot; z.B. nicht.<br />
Dies erhöht auch die Lesbarkeit.</p>
<p>3. Die Operatoren die du im Vektor deklarierst, sind unvollständig. Wenn du den Operator &quot;+&quot; deklarierst, solltest du immer auch einen Operator &quot;+=&quot; deklarieren. Ersterer wird eigentlich immer extern als Funktion deklariert, und verwendet dann intern den += Operator.</p>
<p>z.B:</p>
<pre><code class="language-cpp">// Header
#ifndef VECTOR_HEADER
#define VECTOR_HEADER

class Vector
{
    public:
        //...
        Vector&amp; operator+=(const Vector &amp;vector);
        //...
};

Vector operator+(const Vector &amp;vector1, const Vector &amp;vector2);
//...

#endif VECTOR_HEADER
</code></pre>
<pre><code class="language-cpp">// Soruce
#include &quot;Vector.h&quot;

Vector&amp; Vector::operator+=(const Vector &amp;vector)
{
    x += vector.x;
    y += vector.x;
    z += vector.x;
    return *this;
}

Vector operator+(const Vector &amp;vector1, const Vector &amp;vector2)
{
    Vector result(vector1); // Aufruf Kopierkonstruktor
    result += vector2;      // Aufruf &quot;+=&quot;-Operator
    return result;
}
</code></pre>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634186</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 22 Dec 2008 16:17:55 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Mon, 22 Dec 2008 16:34:38 GMT]]></title><description><![CDATA[<p>EDIT:<br />
Ok, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634195</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Mon, 22 Dec 2008 16:34:38 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt von Struktur in fremder Klasse definieren? on Tue, 23 Dec 2008 16:54:31 GMT]]></title><description><![CDATA[<p>Vielleicht noch was zu Aggregat-Initialisierungsliste vs. Konstruktor: <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-228009.html" rel="nofollow">Hier</a> habe ich in meinem zweiten Beitrag was dazu geschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634740</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634740</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 23 Dec 2008 16:54:31 GMT</pubDate></item></channel></rss>