<?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[Filestream als return Wert]]></title><description><![CDATA[<p>Hallo !</p>
<p>Würde gerne einen Filestream als return Wert einer Methode zurückgeben aber so funktioniert das leider nicht</p>
<pre><code class="language-cpp">ifstream&amp; KcEncryptStream()
</code></pre>
<p>wie müsste die Methodendeklaration aussehen ?</p>
<p>Danke und mfg leon22</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217393/filestream-als-return-wert</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 15:53:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217393.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Jul 2008 12:01:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:01:26 GMT]]></title><description><![CDATA[<p>Hallo !</p>
<p>Würde gerne einen Filestream als return Wert einer Methode zurückgeben aber so funktioniert das leider nicht</p>
<pre><code class="language-cpp">ifstream&amp; KcEncryptStream()
</code></pre>
<p>wie müsste die Methodendeklaration aussehen ?</p>
<p>Danke und mfg leon22</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542540</guid><dc:creator><![CDATA[leon22]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:01:26 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:12:17 GMT]]></title><description><![CDATA[<p>Zeig mal etwas mehr Code, zum Beispiel die Klasse darum herum. Die Deklaration sollte so stimmen, du musst einfach noch ein ; anhängen, was du aber wahrscheinlich getan hast. Oder meinst du die Definition der Methode?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542553</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:12:17 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:14:19 GMT]]></title><description><![CDATA[<p>Für sowas eignet sich boost::shared_ptr&lt;&gt; ganz gut, also in dem Fall boost::shared_ptr<a href="std::ifstream" rel="nofollow">std::ifstream</a> oder u.u. nur boost::shared_ptr<a href="std::istream" rel="nofollow">std::istream</a>.<br />
Wenn du keine Boost verwenden willst ginge evtl. noch std::auto_ptr&lt;&gt;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542557</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:14:19 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:17:23 GMT]]></title><description><![CDATA[<p>Wieso meinst du, sollte man hier Autozeiger verwenden? Reicht die Rückgabe als Referenz nicht aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542561</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:17:23 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:19:21 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Wieso meinst du, sollte man hier Autozeiger verwenden? Reicht die Rückgabe als Referenz nicht aus?</p>
</blockquote>
<p>Mit den gegebenen Informationen kommt der ifstream als Referenz aus einer globalen Funktion heraus. Das heisst, ifstream ist vermutlich eine auto-Variable aus der Funktion und somit wird da Schrott zurückgegeben (weil ifstream beim Verlassen der Funktion wieder zerstört wird).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542563</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:19:21 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:23:51 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Mit den gegebenen Informationen kommt der ifstream als Referenz aus einer globalen Funktion heraus. Das heisst, ifstream ist vermutlich eine auto-Variable aus der Funktion und somit wird da Schrott zurückgegeben (weil ifstream beim Verlassen der Funktion wieder zerstört wird).</p>
</blockquote>
<p>Aber wenn der Threadersteller von &quot;Methode&quot; spricht, denke ich, der Filestream könnte auch eine Klassenvariable sein (ist zwar nicht sehr sinnvoll, aber ja...). Was würde die Rückgabe eines lokalen Filestreams bringen (auch designtechnisch)?</p>
<p>Warten wir doch einfach, bis wir genauere Absichten erfahren <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/1542573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542573</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:23:51 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:25:15 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Was würde die Rückgabe eines lokalen Filestreams bringen (auch designtechnisch)?</p>
</blockquote>
<p>Nichts, aber es funktioniert ja offensichtlich auch nicht. <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/1542574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542574</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:25:15 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:30:39 GMT]]></title><description><![CDATA[<p>Der Hintergrund warum ich hier mit filestreams arbeite ist dass ich eine verschlüsselte Datei hab die dann entschlüsselt in ein filestreamobject gekapselt wird um dann intern damit weiterarbeiten zu können !<br />
(die entschlüsselte Datei soll nicht im Klartext auf der Platte abgelegt werden)</p>
<p>mfg</p>
<p>PS: Der Compiler meckert bezüglich des return Typs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542577</guid><dc:creator><![CDATA[leon22]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:30:39 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:34:00 GMT]]></title><description><![CDATA[<p>Es wäre sehr schön, wenn du endlich ein bisschen mehr relevanten Code (Klasse, Funktion, Filestream) und die Fehlermeldung des Compilers hier angeben könntest, dann müssten wir auch nicht raten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542584</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:39:09 GMT]]></title><description><![CDATA[<p>header file</p>
<pre><code class="language-cpp">#define C_FN_SHARE extern &quot;C&quot; __declspec(dllexport)
..
C_FN_SHARE ifstream&amp; KcEncryptStream(LPCTSTR lpInFile, LPCTSTR lpPassword);
</code></pre>
<p>cpp file</p>
<pre><code class="language-cpp">C_FN_SHARE ifstream&amp; KcEncryptStream(LPCTSTR lpInFile, LPCTSTR lpPassword)
{
  ...
  ifstream hOutStream;
  ...
  return hOutStream;
}
</code></pre>
<p>(geht ohne Referenz aber auch nicht)</p>
<p>Compiler Fehler Meldung</p>
<pre><code>error C2143: syntax error : missing ';' before '&amp;'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2065: 'hOutStream' : undeclared identifier
</code></pre>
<p>#include &lt;fstream&gt; ist inkludiert</p>
<p>Danke und mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542591</guid><dc:creator><![CDATA[leon22]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:39:09 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:43:22 GMT]]></title><description><![CDATA[<p>Ich habe die starke Vermutung, dass ein std:: fehlt.</p>
<p>BTW: Beißen sich extern &quot;C&quot; und die Verwendung von Klassen nicht ein wenig? Ich meine, wenn der Aufrufer ein C-Programm ist, wird er die zurückgegebene Klasse doch sicher sowieso nicht benutzen können?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542596</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:44:46 GMT]]></title><description><![CDATA[<p>Mach es doch durch Überladung des &gt;&gt; Operators. Dann kannst Du es auf die übliche Art und Weise benutzen.</p>
<pre><code class="language-cpp">class Decrypter
{
public:
    Decrypter(const SpecialParamType&amp; param);
    void decrypt(TypeOfDataToDecrypt&amp; data);
    //...interna
};

std::istream&amp; operator&gt;&gt;(std::istream&amp; str, Decrypter&amp; enc)
{
    //enc benutzen um den stream zu manipulieren...
    return str;
}

int main()
{
    //verschluesselte datei oeffnen
    std::ifstream stream(&quot;decrypted_data.dat&quot;);

    //dycrypter
    Decrypter decrypter(4711);

    //einlesen
    stream &gt;&gt; decrypter;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1542598</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542598</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:44:46 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 12:57:54 GMT]]></title><description><![CDATA[<p>Danke !</p>
<p>Hatte blöderweise das std:: vergessen da ich normalerweise eh immer ein</p>
<pre><code class="language-cpp">using std;
</code></pre>
<p>hab, aber diesmal eben nicht !</p>
<p>Danke und lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542617</guid><dc:creator><![CDATA[leon22]]></dc:creator><pubDate>Mon, 07 Jul 2008 12:57:54 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 13:51:55 GMT]]></title><description><![CDATA[<p>Du kannst sowiso nicht c++ konstrukte (hier templates, klassen) als extern &quot;C&quot; exportieren.</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542692</guid><dc:creator><![CDATA[simon.gysi]]></dc:creator><pubDate>Mon, 07 Jul 2008 13:51:55 GMT</pubDate></item><item><title><![CDATA[Reply to Filestream als return Wert on Mon, 07 Jul 2008 17:52:43 GMT]]></title><description><![CDATA[<p>simon.gysi schrieb:</p>
<blockquote>
<p>Du kannst sowiso nicht c++ konstrukte (hier templates, klassen) als extern &quot;C&quot; exportieren.</p>
<p>Simon</p>
</blockquote>
<p>Er exportiert doch nur eine Funktion, wieso sollte das nicht gehen? Bloss weil der Return-Typ ne C++ Klasse ist? Sollte doch egal sein...<br />
(Kann man aus C heraus dann natürlich nicht verwenden, aber wenns nur dazu da ist um definierte Namen zu erhalten...)</p>
<p>Davon abgesehen dass es IMO gehen sollte wäre es vermutlich trotzdem besser die exportierten Funktionen entweder ganz ohne extern &quot;C&quot; zu exportieren, oder aber in ein Interface zu packen, und nur einen Zeiger auf dieses Interface von einer einzigen extern &quot;C&quot; Funktion zurückgeben zu lassen.</p>
<p>Der MSVC geht nämlich per default z.B. auch davon aus dass extern &quot;C&quot; Funktionen keine Exceptions werfen... und dann passiert grober Mist wenn eine extern &quot;C&quot; Funktion nun doch eine Exception wirft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542929</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 07 Jul 2008 17:52:43 GMT</pubDate></item></channel></rss>