<?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[remove_if]]></title><description><![CDATA[<p>Hab eine class parser und darin ein member</p>
<pre><code>std::string infile_string;
</code></pre>
<p>Ich will jetzt alle Ascii-zeichen kleiner 0x20 außer 0x01 entfernen.</p>
<p>Freie Funktion ist:</p>
<pre><code>bool IsInvalidChar(const char c) { return ( c &lt; 0x20 &amp;&amp; c != 0x01 ); }
</code></pre>
<p>aber</p>
<pre><code>infile_string.resize( std::remove_if(infile_string.begin(), infile_string.end(), IsInvalidChar) - infile_string.begin() );
</code></pre>
<p>sagt mir immer nur</p>
<blockquote>
<p>one or more multiply defined symbols found</p>
</blockquote>
<p>Es gibt aber nur diese beiden Zeilen was IsInvalidChar angeht.<br />
(VC 2005 - also bitte keine lambdas und sowas)</p>
<p>Für etwas Hilfe wäre ich sehr dankbar. Danke im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325645/remove_if</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 03:50:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325645.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 May 2014 21:37:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to remove_if on Sun, 11 May 2014 21:37:03 GMT]]></title><description><![CDATA[<p>Hab eine class parser und darin ein member</p>
<pre><code>std::string infile_string;
</code></pre>
<p>Ich will jetzt alle Ascii-zeichen kleiner 0x20 außer 0x01 entfernen.</p>
<p>Freie Funktion ist:</p>
<pre><code>bool IsInvalidChar(const char c) { return ( c &lt; 0x20 &amp;&amp; c != 0x01 ); }
</code></pre>
<p>aber</p>
<pre><code>infile_string.resize( std::remove_if(infile_string.begin(), infile_string.end(), IsInvalidChar) - infile_string.begin() );
</code></pre>
<p>sagt mir immer nur</p>
<blockquote>
<p>one or more multiply defined symbols found</p>
</blockquote>
<p>Es gibt aber nur diese beiden Zeilen was IsInvalidChar angeht.<br />
(VC 2005 - also bitte keine lambdas und sowas)</p>
<p>Für etwas Hilfe wäre ich sehr dankbar. Danke im voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398703</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Sun, 11 May 2014 21:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Sun, 11 May 2014 21:45:34 GMT]]></title><description><![CDATA[<p>Versuch mal</p>
<pre><code>infile_string.erase( std::remove_if(infile_string.begin(), infile_string.end(), IsInvalidChar), infile_string.end() );
</code></pre>
<p>Das ist lediglich ein Bug, denn der Code ist völlig korrekt (soweit ich sehen kann und du den echten Code gepostet hast). Hast du aus Versehen <code>infile_string</code> in einem Header ohne <code>inline</code> definiert?</p>
<p>Wo tritt der Fehler eigentlich auf? In der gezeigten Zeile?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398704</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398704</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 11 May 2014 21:45:34 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Wed, 11 Jun 2014 22:26:12 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398705</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Wed, 11 Jun 2014 22:26:12 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Sun, 11 May 2014 22:37:06 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Versuch mal</p>
<pre><code>infile_string.erase( std::remove_if(infile_string.begin(), infile_string.end(), IsInvalidChar), infile_string.end() );
</code></pre>
<p>Das ist lediglich ein Bug, denn der Code ist völlig korrekt (soweit ich sehen kann und du den echten Code gepostet hast).</p>
</blockquote>
<p>Ich bin recht faul, daher ist alles copy + paste = original code. erase gibt den selben error, trotz dem zig-ten rebuild.</p>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Hast du aus Versehen <code>infile_string</code> in einem Header ohne <code>inline</code> definiert?</p>
</blockquote>
<p>Kein inline, nirgends. Wieso auch?</p>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Wo tritt der Fehler eigentlich auf? In der gezeigten Zeile?</p>
</blockquote>
<p>Beim linkem:</p>
<blockquote>
<p>1&gt;ParserDlg.obj : error LNK2005: &quot;bool __cdecl IsInvalidChar(char)&quot; (?IsInvalidChar@@YA_ND@Z) already defined in Parser.obj<br />
1&gt;M:\Visual Studio 2005\Projects\...\Parser.exe : fatal error LNK1169: one or more multiply defined symbols found</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2398711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398711</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Sun, 11 May 2014 22:37:06 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Mon, 12 May 2014 03:44:17 GMT]]></title><description><![CDATA[<p>EOP schrieb:</p>
<blockquote>
<p>Kein inline, nirgends. Wieso auch?</p>
</blockquote>
<p>Weil es zu Linkerfehlern kommt, wenn die Funktion dann in mehr als einer Übersetzungseinheit landet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398719</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 12 May 2014 03:44:17 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Mon, 12 May 2014 04:48:32 GMT]]></title><description><![CDATA[<p>Vielen Dank, mit inline funktioniert es problemlos.<br />
Allerdings verstehe ich nicht wieso es notwendig ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398720</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Mon, 12 May 2014 04:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Mon, 12 May 2014 06:01:23 GMT]]></title><description><![CDATA[<p>EOP schrieb:</p>
<blockquote>
<p>Allerdings verstehe ich nicht wieso es notwendig ist.</p>
</blockquote>
<p>Dann informier dich mal über die One Definition Rule.</p>
<p>Dadurch, dass du den Header mit der Funktionsdefinition sowohl in Parser.cpp als auch in ParserDlg.cpp einbindest, landet die Funktion in zwei Übersetzungseinheiten. Wenn der Linker das dann zusammensetzen soll, kann er nicht entscheiden, welche der zwei Definitionen er benutzen soll.</p>
<p>Mit inline erlaubst du solche Mehrfachdefinitionen, musst aber dann selbst dafür sorgen, dass alle gleich sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398726</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 12 May 2014 06:01:23 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Mon, 12 May 2014 06:50:24 GMT]]></title><description><![CDATA[<p>Wieso kompilieren und funktionieren dann andere klassenlose Funktionen die ich verwende problemlos?<br />
Alle sind (mit header guard) in einer .h Datei definiert.<br />
Aber wenn ich diese Funktion auch mit reinstecke gibt's wieder denselben Linkerfehler. Verwirrt mich etwas.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398736</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Mon, 12 May 2014 06:50:24 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Mon, 12 May 2014 07:29:07 GMT]]></title><description><![CDATA[<p>Sind diese anderen Funktionen vielleicht static deklariert?</p>
<p>Zeig doch mal ein Minimalbeispiel, das das Problem reproduziert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398745</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 12 May 2014 07:29:07 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Mon, 12 May 2014 07:42:08 GMT]]></title><description><![CDATA[<p>Vielleicht werden die anderen zufällig nur in einer Übersetzungseimheit eingebunden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398748</guid><dc:creator><![CDATA[Jester]]></dc:creator><pubDate>Mon, 12 May 2014 07:42:08 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Mon, 12 May 2014 08:26:12 GMT]]></title><description><![CDATA[<p>ClassLessFunctions.h</p>
<pre><code>#ifndef CLASSLESSFUNCTIONS_H
#define CLASSLESSFUNCTIONS_H

#include &lt;vector&gt;

void unique_vector( std::vector&lt;CString&gt;&amp; vec );
bool IsInvalidChar(const char c);

#endif
</code></pre>
<p>ClassLessFunctions.cpp</p>
<pre><code>#include &quot;stdafx.h&quot;
#include &quot;ClassLessFunctions.h&quot;
#include &lt;algorithm&gt;

void unique_vector( std::vector&lt;CString&gt;&amp; vec )
{
	std::sort( vec.begin(), vec.end() );
	vec.resize( std::unique( vec.begin(), vec.end() ) - vec.begin() );
} // void unique_vector( std::vector&lt;CString&gt;&amp; vec )

bool IsInvalidChar(const char c)
{
	return ( c &lt; 0x20 &amp;&amp; c != 0x01 );
}
</code></pre>
<p>Funktioniert problemlos auch z.B. mit MFC-Funktionen.</p>
<p>EDIT:<br />
Ist auch in mehreren .cpp-Dateien inkludiert und kompiliert und funktioniert.</p>
<p>EDIT #2:<br />
Wenn ich die Funktion nicht gleich im header definiere funktionierts (siehe code).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398752</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398752</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Mon, 12 May 2014 08:26:12 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Mon, 12 May 2014 08:24:35 GMT]]></title><description><![CDATA[<p>Das ist auch nur eine Deklaration der Funkion im Header, keine Definition.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2398755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398755</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Mon, 12 May 2014 08:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to remove_if on Mon, 12 May 2014 08:27:19 GMT]]></title><description><![CDATA[<p>Danke, wieder was gelernt. <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/2398758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2398758</guid><dc:creator><![CDATA[EOP]]></dc:creator><pubDate>Mon, 12 May 2014 08:27:19 GMT</pubDate></item></channel></rss>