<?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[Ausgabeparameter in C++ ohne Zeiger]]></title><description><![CDATA[<p>Hiho,<br />
Ich hab ein wenig Erfahrung mit Turbo Pascal durch den Schulunterricht, hab aber angefangen C++ zu lernen.<br />
Wie bekomme ich Ausgabeparameter ohne diesen ganzen Zeigerkram hin?</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;iostream&quot;
#include &quot;string&quot;
using namespace std;

void Eingabe(string);

int main()
{
	string s=&quot;&quot;;
	Eingabe(s);
	cout &lt;&lt; &quot;\nEs wurde &quot; &lt;&lt; s &lt;&lt; &quot; eingegeben!&quot; &lt;&lt; endl;
	cin &gt;&gt; s;
	return 0;
}

void Eingabe(string&amp; s)
{
	cout &lt;&lt; &quot;Bitte geben sie eine Zeichenfolge ein: &quot;;
	cin &gt;&gt; s;
}
</code></pre>
<p>Wenn ich das jedoch so starte gibt mir Visual C++ eine für mich nicht verwertbare Fehlermeldung zurück:<br />
call by reference.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;void __cdecl Eingabe(class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt;)&quot; (?Eingabe@@YAXV?<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>b</mi><mi>a</mi><mi>s</mi><mi>i</mi><mi>c</mi><mi mathvariant="normal">_</mi><mi>s</mi><mi>t</mi><mi>r</mi><mi>i</mi><mi>n</mi><mi>g</mi><mi mathvariant="normal">@</mi><mi>D</mi><mi>U</mi><mo>?</mo></mrow><annotation encoding="application/x-tex">basic\_string@DU?</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.69444em;"></span><span class="strut bottom" style="height:1.00444em;vertical-align:-0.31em;"></span><span class="base textstyle uncramped"><span class="mord mathit">b</span><span class="mord mathit">a</span><span class="mord mathit">s</span><span class="mord mathit">i</span><span class="mord mathit">c</span><span class="mord mathrm" style="margin-right:0.02778em;">_</span><span class="mord mathit">s</span><span class="mord mathit">t</span><span class="mord mathit" style="margin-right:0.02778em;">r</span><span class="mord mathit">i</span><span class="mord mathit">n</span><span class="mord mathit" style="margin-right:0.03588em;">g</span><span class="mord mathrm">@</span><span class="mord mathit" style="margin-right:0.02778em;">D</span><span class="mord mathit" style="margin-right:0.10903em;">U</span><span class="mclose">?</span></span></span></span>char_traits@D@std@@V?$allocator@D@2@@std@@@Z)&quot; in Funktion &quot;_main&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196362/ausgabeparameter-in-c-ohne-zeiger</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 11:36:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196362.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Oct 2007 20:07:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ausgabeparameter in C++ ohne Zeiger on Sun, 28 Oct 2007 20:07:32 GMT]]></title><description><![CDATA[<p>Hiho,<br />
Ich hab ein wenig Erfahrung mit Turbo Pascal durch den Schulunterricht, hab aber angefangen C++ zu lernen.<br />
Wie bekomme ich Ausgabeparameter ohne diesen ganzen Zeigerkram hin?</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;iostream&quot;
#include &quot;string&quot;
using namespace std;

void Eingabe(string);

int main()
{
	string s=&quot;&quot;;
	Eingabe(s);
	cout &lt;&lt; &quot;\nEs wurde &quot; &lt;&lt; s &lt;&lt; &quot; eingegeben!&quot; &lt;&lt; endl;
	cin &gt;&gt; s;
	return 0;
}

void Eingabe(string&amp; s)
{
	cout &lt;&lt; &quot;Bitte geben sie eine Zeichenfolge ein: &quot;;
	cin &gt;&gt; s;
}
</code></pre>
<p>Wenn ich das jedoch so starte gibt mir Visual C++ eine für mich nicht verwertbare Fehlermeldung zurück:<br />
call by reference.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol &quot;&quot;void __cdecl Eingabe(class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt;)&quot; (?Eingabe@@YAXV?<span class="katex"><span class="katex-mathml"><math><semantics><mrow><mi>b</mi><mi>a</mi><mi>s</mi><mi>i</mi><mi>c</mi><mi mathvariant="normal">_</mi><mi>s</mi><mi>t</mi><mi>r</mi><mi>i</mi><mi>n</mi><mi>g</mi><mi mathvariant="normal">@</mi><mi>D</mi><mi>U</mi><mo>?</mo></mrow><annotation encoding="application/x-tex">basic\_string@DU?</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="strut" style="height:0.69444em;"></span><span class="strut bottom" style="height:1.00444em;vertical-align:-0.31em;"></span><span class="base textstyle uncramped"><span class="mord mathit">b</span><span class="mord mathit">a</span><span class="mord mathit">s</span><span class="mord mathit">i</span><span class="mord mathit">c</span><span class="mord mathrm" style="margin-right:0.02778em;">_</span><span class="mord mathit">s</span><span class="mord mathit">t</span><span class="mord mathit" style="margin-right:0.02778em;">r</span><span class="mord mathit">i</span><span class="mord mathit">n</span><span class="mord mathit" style="margin-right:0.03588em;">g</span><span class="mord mathrm">@</span><span class="mord mathit" style="margin-right:0.02778em;">D</span><span class="mord mathit" style="margin-right:0.10903em;">U</span><span class="mclose">?</span></span></span></span>char_traits@D@std@@V?$allocator@D@2@@std@@@Z)&quot; in Funktion &quot;_main&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393808</guid><dc:creator><![CDATA[Nozdrum]]></dc:creator><pubDate>Sun, 28 Oct 2007 20:07:32 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabeparameter in C++ ohne Zeiger on Sun, 28 Oct 2007 20:12:16 GMT]]></title><description><![CDATA[<p>Ändere</p>
<pre><code class="language-cpp">void Eingabe(string);
</code></pre>
<p>nach</p>
<pre><code class="language-cpp">void Eingabe(string&amp;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1393816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393816</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Sun, 28 Oct 2007 20:12:16 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabeparameter in C++ ohne Zeiger on Sun, 28 Oct 2007 20:20:36 GMT]]></title><description><![CDATA[<p>Ahh Danke The-Kenny jetzt funzt alles <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393818</guid><dc:creator><![CDATA[Nozdrum]]></dc:creator><pubDate>Sun, 28 Oct 2007 20:20:36 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabeparameter in C++ ohne Zeiger on Sun, 28 Oct 2007 20:42:48 GMT]]></title><description><![CDATA[<p>Hmm ja guck dir mal in deinem Buch/Tutorial das Thema param-by-value | param-by-ref | param-by-ptr an ^^</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

void input(std::string const&amp;, std::string&amp;);

int main()
{
    std::string string;
    input(&quot;Bitte geben Sie eine Zeichenfolge ein: &quot;, string);
    std::cout &lt;&lt; &quot;\nSie gaben \&quot;&quot; &lt;&lt; string &lt;&lt; &quot;\&quot; ein!&quot; &lt;&lt; std::endl;
    std::cin.get();
}

void input(std::string const&amp; prompt, std::string&amp; dest);
{
    std::cout &lt;&lt; prompt &lt;&lt; std::flush;
    std::getline(std::cin, dest);
}
</code></pre>
<p><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="🙂"
    /> so die Header heißen &lt;string&gt; (statt &quot;string&quot;) und &lt;iostream&gt; (statt &quot;iostream&quot;). Dann gewöhn dir diesen using namespace-Kram gar nicht erst an <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393826</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 28 Oct 2007 20:42:48 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabeparameter in C++ ohne Zeiger on Mon, 29 Oct 2007 06:55:23 GMT]]></title><description><![CDATA[<p>using namespace ist schon ok, solange man nicht den fehler macht und es in den globalen scope eines headers schreibt.</p>
<pre><code class="language-cpp">/* kann ins auge gehen */
using namespace std;

class Foo
{
 void foo();
};

/* kann höchstens zu kollisionen im eigenen namespace führen */
namespace MyNamespace
{
  using namespace std;

  class Foo
  {
   void foo();
  };
}

/* eher unkritisch */
Foo::foo()
{
  using namespace std;
  // code
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1393914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393914</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Mon, 29 Oct 2007 06:55:23 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabeparameter in C++ ohne Zeiger on Mon, 29 Oct 2007 19:20:27 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p><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="🙂"
    /> so die Header heißen &lt;string&gt; (statt &quot;string&quot;) und &lt;iostream&gt; (statt &quot;iostream&quot;)</p>
</blockquote>
<p>Sag das mal meinen Compiler <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="🙂"
    /> ( benutze Visual C++ )<br />
Wenn ich eine Klasse erzeuge, ich benutze jetzt mal das Bsp. aus meinem Buch.<br />
Header:</p>
<pre><code class="language-cpp">#ifndef _KONTO_
#define _KONTO_
#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Konto
{
	private:
		string name;
		unsigned int nr;
		double stand;

	public:
		bool init(const string&amp;, unsigned long, double);
		void display();
};
#endif
</code></pre>
<p>Die Funktionen</p>
<pre><code class="language-cpp">#include &lt;stdafx.h&gt;
#include &lt;iomanip&gt;
#include &lt;konto.h&gt;
using namespace std;

bool Konto::init(const string&amp; i_name, unsigned long i_nr, double i_stand)
{
	if ( i_name.size() &lt; 1 )
		return false;
	name	= i_name;
	nr		= i_nr;
	stand	= i_stand;
	return true;
}

void Konto::display()
{
	cout &lt;&lt; fixed &lt;&lt; setprecision(2)
		 &lt;&lt; &quot;--------------------------------------\n&quot;
		 &lt;&lt; &quot;Kontoinhaber:  &quot; &lt;&lt; name  &lt;&lt; &quot;\n&quot;
		 &lt;&lt; &quot;Kontonummer:   &quot; &lt;&lt; nr    &lt;&lt; &quot;\n&quot;
		 &lt;&lt; &quot;Kontostand:    &quot; &lt;&lt; stand &lt;&lt; &quot;\n&quot;
		 &lt;&lt; &quot;--------------------------------------\n&quot; 
		 &lt;&lt; endl;
}
</code></pre>
<p>Gibts die tolle Fehlermeldung:<br />
fatal error C1083: Datei (Include) kann nicht geöffnet werden: &quot;konto.h&quot;: No such file or directory</p>
<p>Dann muss das sicherlich irgendwo anders hin, nur wohin hab ich keine Ahnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394320</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394320</guid><dc:creator><![CDATA[Nozdrum]]></dc:creator><pubDate>Mon, 29 Oct 2007 19:20:27 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabeparameter in C++ ohne Zeiger on Mon, 29 Oct 2007 19:39:36 GMT]]></title><description><![CDATA[<p>Ja ... also Dateien die in deinem Verzeichnis sind, gibst du mit &quot;...&quot; an, Dateien die er aus seinen vordefinierten Pfaden finden soll, gibst du mit &lt;...&gt; an. (Um es vereinfacht zu sagen)</p>
<pre><code class="language-cpp">#if !defined(KONTO_H__INCLUDED) // _XYZ gehört Compiler!
#define KONTO_H__INCLUDED

// #include &lt;iostream&gt; warum hier schon, wenn du es noch nicht brauchst?
#include &lt;string&gt;
// using namespace std; niemals im Header

#if (_MSC_VER &gt;= 1300)
#pragma once
#endif // (_MSC_VER &gt;= 1300)

class Konto
{
// private: default bei Klasse
    std::string m_name;
    unsigned int m_nummer;
    double m_guthaben;

public:
    // bool init(const string&amp;, unsigned long, double); In Konstruktor packen
    Konto(std::string const&amp; name, unsigned int number, double balance) 
        : m_name(name), m_nummer(number), m_guthaben(balance) 
    {}
    // void display(); operator &lt;&lt; überladen!
    friend std::ostream&amp; operator &lt;&lt;(std::ostream&amp; out, Konto const&amp; data) 
    {
        out &lt;&lt; &quot;Konto &quot; &lt;&lt; data.m_nummer &lt;&lt; &quot;\n\tInhaber: &quot; &lt;&lt; data.m_name &lt;&lt; &quot;\n\tGuthaben: &quot; &lt;&lt; data.m_guthaben;
        return out;
    }
};

#endif // KONTO_H__INCLUDED
</code></pre>
<p>Da wäre dann</p>
<pre><code class="language-cpp">#include &quot;konto.h&quot;
</code></pre>
<p>Wenn sich die Datei dann in einem Verzeichnis tiefer befindet</p>
<pre><code class="language-cpp">#include &quot;.\xyz\konto.h&quot;
</code></pre>
<p>... usw ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394327</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Mon, 29 Oct 2007 19:39:36 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabeparameter in C++ ohne Zeiger on Mon, 29 Oct 2007 19:50:14 GMT]]></title><description><![CDATA[<p>Ok Danke.<br />
using namespace niemals im Header ok^^</p>
<blockquote>
<pre><code class="language-cpp">// bool init(const string&amp;, unsigned long, double); In Konstruktor packen
</code></pre>
</blockquote>
<p>Konstruktor kommt erst nächstes Kapitel <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>
<p>Nur ab Zeile 24 versteh ich nix mehr.<br />
Was bedeutet das der Operator überladen ist? Und überhaupt: welcher Operator? Da steht doch nur der Funktionstyp und der Funktionsname.<br />
Zeile 25-28 sind dann nur noch kryptische Fragmente für mich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394337</guid><dc:creator><![CDATA[Nozdrum]]></dc:creator><pubDate>Mon, 29 Oct 2007 19:50:14 GMT</pubDate></item><item><title><![CDATA[Reply to Ausgabeparameter in C++ ohne Zeiger on Mon, 29 Oct 2007 20:08:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">friend std::ostream&amp; operator &lt;&lt;(std::ostream&amp; out, Konto const&amp; data) 
    { 
        out &lt;&lt; &quot;Konto &quot; &lt;&lt; data.m_nummer &lt;&lt; &quot;\n\tInhaber: &quot; &lt;&lt; data.m_name &lt;&lt; &quot;\n\tGuthaben: &quot; &lt;&lt; data.m_guthaben; 
        return out; 
    }
</code></pre>
<p>Bedeutet, dass der &lt;&lt;-Operator (Ausgabeoperator) überladen wurde.<br />
Damit ist es jetzt möglich, eine Instanz deiner Klasse in einen beliebigen Stream auszugeben (cout u.ä., fstream etc.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1394343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1394343</guid><dc:creator><![CDATA[The-Kenny]]></dc:creator><pubDate>Mon, 29 Oct 2007 20:08:34 GMT</pubDate></item></channel></rss>