<?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[[Solved] Operator auf Vektoren Dyadisches Produkt]]></title><description><![CDATA[<p>Hallo</p>
<p>Warum ist folgendes nicht möglich?<br />
Vektor.h</p>
<pre><code>#pragma once
#include &quot;RMatrix.h&quot;
class Vektor
{
public:
	int n;
	double *a;
	Vektor();
	~Vektor();

	// Skalarprodukt
	Vektor operator+(Vektor &amp;b);
	Vektor operator-(Vektor &amp;b);
};
</code></pre>
<p>Zeilenvektor.h</p>
<pre><code>#pragma once
#include &quot;Vektor.h&quot;
#include &quot;SpaltenVektor.h&quot;

class ZeilenVektor :
	public Vektor
{
public:
	ZeilenVektor();
	~ZeilenVektor();

	double operator*(ZeilenVektor &amp;b);
	RMatrix operator*(SpaltenVektor &amp;b);
};
</code></pre>
<p>Spaltenvektor.h</p>
<pre><code>#pragma once
#include &quot;Vektor.h&quot;
#include &quot;ZeilenVektor.h&quot;

class SpaltenVektor :
	public Vektor
{
public:
	SpaltenVektor();
	~SpaltenVektor();

	double operator*(SpaltenVektor &amp;b);
	RMatrix operator*(ZeilenVektor &amp;b);
};
</code></pre>
<p>Wie kann ich es doch zum laufen bringen? Der Compiler meldet:<br />
Zeile 13 ZeilenVektor.h error C2061: Syntaxfehler: Bezeichner 'SpaltenVektor'<br />
Zeile 13 SpaltenVektor.h error C2061: Syntaxfehler: Bezeichner 'ZeilenVektor'<br />
so als wären die Dateien nicht eingebunden.</p>
<p>Ist es sinnvoller #ifndef _ABC #define #endif zu nutzen anstelle von #pragma once ?</p>
<p>Danke im Vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327028/solved-operator-auf-vektoren-dyadisches-produkt</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 20:25:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327028.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Jul 2014 08:48:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Tue, 22 Jul 2014 19:13:00 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Warum ist folgendes nicht möglich?<br />
Vektor.h</p>
<pre><code>#pragma once
#include &quot;RMatrix.h&quot;
class Vektor
{
public:
	int n;
	double *a;
	Vektor();
	~Vektor();

	// Skalarprodukt
	Vektor operator+(Vektor &amp;b);
	Vektor operator-(Vektor &amp;b);
};
</code></pre>
<p>Zeilenvektor.h</p>
<pre><code>#pragma once
#include &quot;Vektor.h&quot;
#include &quot;SpaltenVektor.h&quot;

class ZeilenVektor :
	public Vektor
{
public:
	ZeilenVektor();
	~ZeilenVektor();

	double operator*(ZeilenVektor &amp;b);
	RMatrix operator*(SpaltenVektor &amp;b);
};
</code></pre>
<p>Spaltenvektor.h</p>
<pre><code>#pragma once
#include &quot;Vektor.h&quot;
#include &quot;ZeilenVektor.h&quot;

class SpaltenVektor :
	public Vektor
{
public:
	SpaltenVektor();
	~SpaltenVektor();

	double operator*(SpaltenVektor &amp;b);
	RMatrix operator*(ZeilenVektor &amp;b);
};
</code></pre>
<p>Wie kann ich es doch zum laufen bringen? Der Compiler meldet:<br />
Zeile 13 ZeilenVektor.h error C2061: Syntaxfehler: Bezeichner 'SpaltenVektor'<br />
Zeile 13 SpaltenVektor.h error C2061: Syntaxfehler: Bezeichner 'ZeilenVektor'<br />
so als wären die Dateien nicht eingebunden.</p>
<p>Ist es sinnvoller #ifndef _ABC #define #endif zu nutzen anstelle von #pragma once ?</p>
<p>Danke im Vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409484</guid><dc:creator><![CDATA[Nerva]]></dc:creator><pubDate>Tue, 22 Jul 2014 19:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Sun, 20 Jul 2014 08:59:34 GMT]]></title><description><![CDATA[<p>Du hast eine zyklische Abhängigkeit und der Include Guard wird deshalb Probleme machen.<br />
Lösung: Forwärtsdeklaration zum Brechen der Abh.:</p>
<pre><code class="language-cpp">class A; // jetzt kannst du den Namen A in z.B. Zeigern o. Referenzen benutzen

class B {
   void fun(A&amp;);
};

class A { };
</code></pre>
<p>Edit: Danach kannst du den Include des jeweils anderen Vektors streichen, da du in den Headern sowieso keine Klassendefinitionen der anderen Klassen brauchst, sondern nur die Namen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409485</guid><dc:creator><![CDATA[Jodocus]]></dc:creator><pubDate>Sun, 20 Jul 2014 08:59:34 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Thu, 24 Jul 2014 08:39:02 GMT]]></title><description><![CDATA[<p>Jodocus schrieb:</p>
<blockquote>
<p>Du hast eine zyklische Abhängigkeit und der Include Guard wird deshalb Probleme machen.<br />
Lösung: Forwärtsdeklaration zum Brechen der Abh.:</p>
<pre><code class="language-cpp">class A; // jetzt kannst du den Namen A in z.B. Zeigern o. Referenzen benutzen

class B {
   void fun(A&amp;);
};

class A { };
</code></pre>
<p>Edit: Danach kannst du den Include des jeweils anderen Vektors streichen, da du in den Headern sowieso keine Klassendefinitionen der anderen Klassen brauchst, sondern nur die Namen.</p>
</blockquote>
<p>Jupp.</p>
<p>Ich habe gute Erfahrungen gemacht mit</p>
<pre><code class="language-cpp">//Datei B.hpp
#ifndef B_HPP_INCLUDED_a672ef7bac5bf2e9b1b861fc374778ad
#define B_HPP_INCLUDED_a672ef7bac5bf2e9b1b861fc374778ad //edit: vorhin vergessen
#pragma once

class A; // B muss leider A ein wenig kennen

class B {
   void fun(A&amp;);
};

#include &quot;A.hpp&quot; //Trick 17

#endif
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2409496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409496</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 24 Jul 2014 08:39:02 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Mon, 21 Jul 2014 09:33:32 GMT]]></title><description><![CDATA[<p>Das funktioniert leider auch nicht so richtig. Wenn ich die Klassen verwenden möchte wird von einer immer nur die Leere Klasse verwendet, je nachdem welche Datei ich zuletzt einbinde.</p>
<p>Jedoch habe ich nach kurzem Überlegen festgestellt, dass das Produkt SpaltenMatrix * Zeilenmatrix nur im eindimensionalen Fall Sinn macht und so das Problem beseitigt werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409661</guid><dc:creator><![CDATA[Nerva]]></dc:creator><pubDate>Mon, 21 Jul 2014 09:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Mon, 21 Jul 2014 09:59:18 GMT]]></title><description><![CDATA[<p>Nerva schrieb:</p>
<blockquote>
<p>Das funktioniert leider auch nicht so richtig. Wenn ich die Klassen verwenden möchte wird von einer immer nur die Leere Klasse verwendet, je nachdem welche Datei ich zuletzt einbinde.</p>
</blockquote>
<p>Was für eine &quot;leere&quot; Klasse?</p>
<pre><code>class XYZ;
</code></pre>
<p>ist keine leere Klasse, sondern die Deklaration (Bekanntmachung für den Compiler) einer Klasse (die so groß sein kann, wie sie will).</p>
<p>Mir scheint eher, du machst was falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409664</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 21 Jul 2014 09:59:18 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Tue, 22 Jul 2014 19:12:43 GMT]]></title><description><![CDATA[<p>Ja richtig ich habe etwas falsch gemacht und zwar habe ich die Klasse wie ich es gewohnt war mit Klammern angegeben und nicht ohne.</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2409983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2409983</guid><dc:creator><![CDATA[Nerva]]></dc:creator><pubDate>Tue, 22 Jul 2014 19:12:43 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Wed, 23 Jul 2014 07:39:45 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">//Datei B.hpp
#ifndef B_HPP_INCLUDED_a672ef7bac5bf2e9b1b861fc374778ad
#pragma once
[...]
#endif
</code></pre>
</blockquote>
<p>Hm, hier vermischst du zwei Philosophien. Entweder Include Guards und dann richtig, oder pragma once. Dein ifndef bringt dir ohne define gar nichts, das kannst du genauso gut weglassen. Das pragma once ist eher bei Objective C bzw. bei Apple üblich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410019</guid><dc:creator><![CDATA[oenone]]></dc:creator><pubDate>Wed, 23 Jul 2014 07:39:45 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Wed, 23 Jul 2014 08:22:25 GMT]]></title><description><![CDATA[<p>Nenne einen der &quot;großen&quot; Compiler, die <em>#pragma once</em> nicht verstehen ?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410027</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 23 Jul 2014 08:22:25 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Wed, 23 Jul 2014 08:35:18 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Nenne einen der &quot;großen&quot; Compiler, die <em>#pragma once</em> nicht verstehen ?!</p>
</blockquote>
<p>Falls das an mich gerichtet war: Im Gegenteil, ich gehe davon aus, dass so gut wie alle modernen Compiler das verstehen. Was an &quot;bei ... üblich&quot; hast du nicht verstanden?</p>
<p>Bei C++ werden meistens halt Include Guards mittels ifndef/define/endif benutzt, mehr habe ich nicht ausgesagt.</p>
<p>Dass das ifndef/endif ohne define bzw. bei pragma once sinnlos ist, wirst du wohl einsehen, oder?</p>
<p>Kein Grund, gleich durch die Decke zu gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410028</guid><dc:creator><![CDATA[oenone]]></dc:creator><pubDate>Wed, 23 Jul 2014 08:35:18 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Wed, 23 Jul 2014 09:53:54 GMT]]></title><description><![CDATA[<p>oenone schrieb:</p>
<blockquote>
<p>Kein Grund, gleich durch die Decke zu gehen.</p>
</blockquote>
<p>Oo Tu ich doch gar nicht <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="😕"
    /> . Du jedoch schon eher... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Klar, gewöhnlich sieht man die #if-#define Kaskade. Aber z.B. ist bei MSVC projekten das #pragma once voreingestellt.</p>
<p>Dass die eine Hälfte mit dem anderen nicht funktioniert, ist vollkommen klar. (Wobei das beides keine Philosophien sind, aber das ist jetzt Haarspalterei.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410045</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 23 Jul 2014 09:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Thu, 24 Jul 2014 08:10:47 GMT]]></title><description><![CDATA[<p>Mach doch die Vorwarddekl besser bei der entsprechenden Klasse, so hat man alles schoen beisammen und musst dir keine Gedanken um vorward dekls wo anders machen.</p>
<pre><code>#ifndef DINGSBUMS
#define DINGSBUMS 1

class Spaltenvektor;

#include &quot;Zeilenvektor.h&quot;

class Spaltenvektor 
{
// ...
};

#endif /* DINGSBUMS */
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2410215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410215</guid><dc:creator><![CDATA[ScottZhang]]></dc:creator><pubDate>Thu, 24 Jul 2014 08:10:47 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Thu, 24 Jul 2014 08:32:25 GMT]]></title><description><![CDATA[<p>ScottZhang schrieb:</p>
<blockquote>
<p>Mach doch die Vorwarddekl besser bei der entsprechenden Klasse, so hat man alles schoen beisammen und musst dir keine Gedanken um vorward dekls wo anders machen.</p>
<pre><code>#ifndef DINGSBUMS
#define DINGSBUMS 1

class Spaltenvektor;

#include &quot;Zeilenvektor.h&quot;

class Spaltenvektor 
{
// ...
};

#endif /* DINGSBUMS */
</code></pre>
</blockquote>
<p>Das ist kein robuster Ansatz. Spaltenvektor kann nicht wissen, ob die Definition von Zeilenvektor von der Definition von Spaltenvektor abhängt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410225</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 24 Jul 2014 08:32:25 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Thu, 24 Jul 2014 08:37:11 GMT]]></title><description><![CDATA[<p>oenone schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<pre><code class="language-cpp">//Datei B.hpp
#ifndef B_HPP_INCLUDED_a672ef7bac5bf2e9b1b861fc374778ad
#pragma once
[...]
#endif
</code></pre>
</blockquote>
<p>Hm, hier vermischst du zwei Philosophien. Entweder Include Guards und dann richtig, oder pragma once. Dein ifndef bringt dir ohne define gar nichts, das kannst du genauso gut weglassen. Das pragma once ist eher bei Objective C bzw. bei Apple üblich.</p>
</blockquote>
<p>define hab ich schlicht vergessen.<br />
ifndef plus pragma stört nicht, soll der leser sich aussuchen, welches er nimmt oder beide lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410226</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 24 Jul 2014 08:37:11 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Thu, 24 Jul 2014 08:41:18 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>ScottZhang schrieb:</p>
<blockquote>
<p>Mach doch die Vorwarddekl besser bei der entsprechenden Klasse, so hat man alles schoen beisammen und musst dir keine Gedanken um vorward dekls wo anders machen.</p>
<pre><code>#ifndef DINGSBUMS
#define DINGSBUMS 1

class Spaltenvektor;

#include &quot;Zeilenvektor.h&quot;

class Spaltenvektor 
{
// ...
};

#endif /* DINGSBUMS */
</code></pre>
</blockquote>
<p>Das ist kein robuster Ansatz. Spaltenvektor kann nicht wissen, ob die Definition von Zeilenvektor von der Definition von Spaltenvektor abhängt.</p>
</blockquote>
<p>Wenn beide Definitionen gegenseitig voneinander abhängen…<br />
Jo, das merkt man dann un repariert es.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410227</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 24 Jul 2014 08:41:18 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Thu, 24 Jul 2014 09:03:03 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>ScottZhang schrieb:</p>
<blockquote>
<p>Mach doch die Vorwarddekl besser bei der entsprechenden Klasse, so hat man alles schoen beisammen und musst dir keine Gedanken um vorward dekls wo anders machen.</p>
<pre><code>#ifndef DINGSBUMS
#define DINGSBUMS 1

class Spaltenvektor;

#include &quot;Zeilenvektor.h&quot;

class Spaltenvektor 
{
// ...
};

#endif /* DINGSBUMS */
</code></pre>
</blockquote>
<p>Das ist kein robuster Ansatz. Spaltenvektor kann nicht wissen, ob die Definition von Zeilenvektor von der Definition von Spaltenvektor abhängt.</p>
</blockquote>
<p>Wenn beide Definitionen gegenseitig voneinander abhängen…<br />
Jo, das merkt man dann un repariert es.</p>
</blockquote>
<p>Womit das sich-keine-Gedanken-machen-müssen widerlegt wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410233</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 24 Jul 2014 09:03:03 GMT</pubDate></item><item><title><![CDATA[Reply to [Solved] Operator auf Vektoren Dyadisches Produkt on Thu, 24 Jul 2014 16:23:09 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>ScottZhang schrieb:</p>
<blockquote>
<p>Mach doch die Vorwarddekl besser bei der entsprechenden Klasse, so hat man alles schoen beisammen und musst dir keine Gedanken um vorward dekls wo anders machen.</p>
<pre><code>#ifndef DINGSBUMS
#define DINGSBUMS 1

class Spaltenvektor;

#include &quot;Zeilenvektor.h&quot;

class Spaltenvektor 
{
// ...
};

#endif /* DINGSBUMS */
</code></pre>
</blockquote>
<p>Das ist kein robuster Ansatz. Spaltenvektor kann nicht wissen, ob die Definition von Zeilenvektor von der Definition von Spaltenvektor abhängt.</p>
</blockquote>
<p>Stimmt auch wieder, ist irgendwie auch nicht besser.</p>
<p>Edit: Obwohl, so bleibt wenigstens die Abhängigkeit vom Header erhalten, kann ja beim compilieren auch ne Rolle spielen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2410292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2410292</guid><dc:creator><![CDATA[ScottZhang]]></dc:creator><pubDate>Thu, 24 Jul 2014 16:23:09 GMT</pubDate></item></channel></rss>