<?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[Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz...]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse mit mehreren Funktionen, ich möchte in einer Funktion auf die Iteratoren einer anderen Funktion zugreifen, sie sollen jedoch nicht global sein. Gibts da einen Weg? Wie mache ich das am besten? So sieht meine Klasse im Moment aus...:</p>
<pre><code class="language-cpp">class Editor
{
public:

	//Textdatei einelesen
	void einlesen(){

		std::ifstream ifs(&quot;C:/asci1.txt&quot;);
		std::string tmp;

		typedef std::vector&lt;std::string&gt; linevector;

		linevector lv;

		linevector::iterator li;

		while(getline(ifs, tmp)) 
		{
			lv.push_back(tmp);
			tmp = std::string();
		}

	}

	//Bestimmte Zeilen ansehen
	void viewline(){

		typedef std::vector&lt;int&gt; intvector;

		intvector intv;
		intvector::const_iterator inti;
		intvector::iterator intii;

		std::cout&lt;&lt;&quot;Welche Zeilen sollen ausgegeebn werden?: \n\n&quot;;

		int eingabe;

		while (std::cin &gt;&gt; eingabe &amp;&amp; eingabe != 999 )
		{
		intv.push_back(eingabe);	
		}

		for (inti=intv.begin(); inti!=intv.end(); ++inti) 
		{
			li = lv.begin() + *inti; //Iteratoren von außen
			std::cout &lt;&lt; *li &lt;&lt; std::endl;
		}
	}

};

int main(){

	Editor edit;
	edit.einlesen(){
	edit.viewline();
	return 0;
}
</code></pre>
<p>Vielen Dank im vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/165954/wie-auf-lokale-iteratoren-außerhalb-einer-funktion-explizit-zugreifen-zusatz</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 06:11:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/165954.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 24 Nov 2006 15:22:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Fri, 24 Nov 2006 20:00:11 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Klasse mit mehreren Funktionen, ich möchte in einer Funktion auf die Iteratoren einer anderen Funktion zugreifen, sie sollen jedoch nicht global sein. Gibts da einen Weg? Wie mache ich das am besten? So sieht meine Klasse im Moment aus...:</p>
<pre><code class="language-cpp">class Editor
{
public:

	//Textdatei einelesen
	void einlesen(){

		std::ifstream ifs(&quot;C:/asci1.txt&quot;);
		std::string tmp;

		typedef std::vector&lt;std::string&gt; linevector;

		linevector lv;

		linevector::iterator li;

		while(getline(ifs, tmp)) 
		{
			lv.push_back(tmp);
			tmp = std::string();
		}

	}

	//Bestimmte Zeilen ansehen
	void viewline(){

		typedef std::vector&lt;int&gt; intvector;

		intvector intv;
		intvector::const_iterator inti;
		intvector::iterator intii;

		std::cout&lt;&lt;&quot;Welche Zeilen sollen ausgegeebn werden?: \n\n&quot;;

		int eingabe;

		while (std::cin &gt;&gt; eingabe &amp;&amp; eingabe != 999 )
		{
		intv.push_back(eingabe);	
		}

		for (inti=intv.begin(); inti!=intv.end(); ++inti) 
		{
			li = lv.begin() + *inti; //Iteratoren von außen
			std::cout &lt;&lt; *li &lt;&lt; std::endl;
		}
	}

};

int main(){

	Editor edit;
	edit.einlesen(){
	edit.viewline();
	return 0;
}
</code></pre>
<p>Vielen Dank im vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1180790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180790</guid><dc:creator><![CDATA[travelflo22]]></dc:creator><pubDate>Fri, 24 Nov 2006 20:00:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Fri, 24 Nov 2006 15:37:15 GMT]]></title><description><![CDATA[<p>Stichwort: Parameter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1180796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180796</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Fri, 24 Nov 2006 15:37:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Fri, 24 Nov 2006 15:43:53 GMT]]></title><description><![CDATA[<p>hab schon etwas rumprobiert.. aber wenn ich versuche die Parameter so</p>
<pre><code class="language-cpp">void viewline(linevector::iterator li, linevector lv)
</code></pre>
<p>zu übergeben ist das natürlich syntakisch falsch... <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=":/"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1180799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180799</guid><dc:creator><![CDATA[travelflo22]]></dc:creator><pubDate>Fri, 24 Nov 2006 15:43:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Fri, 24 Nov 2006 15:57:51 GMT]]></title><description><![CDATA[<p>Zuerst mußt du einmal den Datentyp 'linevector' in der Klasse bekannt machen (nicht nur in der Funktion).<br />
Außerdem solltest du dann hiervon ein Klassenmember anlegen, denn sonst ist der 'linevector' nach dem Aufruf der Methode 'einlesen' wieder gelöscht.</p>
<p>Dann könntest du einen Iterator als Parameter benutzen:</p>
<pre><code class="language-cpp">void viewline(typename linevector::iterator li)
</code></pre>
<p>Die einfachere Art wäre aber einfach die Zeilennummern (Beginn und Ende) als int Werte anzugeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1180803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180803</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Fri, 24 Nov 2006 15:57:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Fri, 24 Nov 2006 16:11:07 GMT]]></title><description><![CDATA[<p>bin noch anfänger, hab grad mal etwas nach klassenmember gegooglelt, aber was das genau ist, ist mir nicht klar...</p>
<p>ich hab nun die deklarationen aus der funktion rausgezogen und global gemacht:</p>
<pre><code class="language-cpp">public:

	typedef std::vector&lt;std::string&gt; linevector;
	linevector lv;
	linevector::iterator li;

	//Textdatei einelesen
	void einlesen(){
</code></pre>
<p>und die viewline funktion um die parameter erweitert:</p>
<pre><code class="language-cpp">void viewline(typename linevector::iterator li, typename linevector lv){
</code></pre>
<p>doch dann meckert der compiler:</p>
<pre><code class="language-cpp">.\ViewLines.cpp(35) : error C2899: typename cannot be used outside a template declaration
.\ViewLines.cpp(35) : error C2899: typename cannot be used outside a template declaration
.\ViewLines.cpp(68) : error C2660: 'Editor::viewline' : function does not take 0 arguments
</code></pre>
<p>und wie sollte ich es als int übergeben? ich brauche ja den vector und den iterator der einlese-funktion...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1180810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180810</guid><dc:creator><![CDATA[travelflo22]]></dc:creator><pubDate>Fri, 24 Nov 2006 16:11:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Fri, 24 Nov 2006 16:38:04 GMT]]></title><description><![CDATA[<p>Hallo travelflo22,</p>
<p>wenn Du den linevector lv als Datenmember erzeugst brauchst Du keinen iterator darauf zu übergeben. Du kannst ihn Dir dann in der Funktion viewline neu holen.</p>
<pre><code class="language-cpp">class Editor
{
public:
    typedef std::vector&lt;std::string&gt; linevector;

    //Textdatei einelesen
    void einlesen()
    {
        std::ifstream ifs(&quot;C:/asci1.txt&quot;);
        std::string tmp;

        linevector::iterator li;

		while(getline(ifs, tmp)) 
        {
            lv.push_back(tmp);
            tmp = std::string();
        }

    }

    //Bestimmte Zeilen ansehen
    void viewline()
    {
        typedef std::vector&lt;int&gt; intvector;

        intvector intv;
        intvector::const_iterator inti;

        std::cout&lt;&lt;&quot;Welche Zeilen sollen ausgegeebn werden?: \n\n&quot;;

        int eingabe;

        while (std::cin &gt;&gt; eingabe &amp;&amp; eingabe != 999 )
        {
            intv.push_back(eingabe);    
        }

        linevector::iterator li;
        for (inti=intv.begin(); inti!=intv.end(); inti++) 
        {
            li = lv.begin() + *inti; //Iteratoren von außen
			std::cout &lt;&lt; *li &lt;&lt; std::endl;
        }
    }

private:
    linevector lv;
};
</code></pre>
<p>Ich hoffe das hilft Dir weiter.</p>
<p>Viele Grüße<br />
Knecht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1180833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180833</guid><dc:creator><![CDATA[Knecht]]></dc:creator><pubDate>Fri, 24 Nov 2006 16:38:04 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Fri, 24 Nov 2006 17:25:11 GMT]]></title><description><![CDATA[<p>danke.. das hat mir sehr weitergeholfen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1180863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180863</guid><dc:creator><![CDATA[travelflo22]]></dc:creator><pubDate>Fri, 24 Nov 2006 17:25:11 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Fri, 24 Nov 2006 19:41:40 GMT]]></title><description><![CDATA[<p>nachdem ich hier soviel Hilfe erfahren hab bräuchte ich nochmal ne Idee...</p>
<p>ich habe eine Funktion geschrieben, welche bestimmte zeilen aus einem string-vector (welchre Zeilen enthält) löschen soll... wenn ich jedoch das löschen über eine for-schleife lassen, wird durch das ständige erneute aufrufen der funktion lv.erase(li) das eregbnis verfälscht, da die Elemente ja nachrücken...</p>
<p>meine Idee wärs nun nen neuen Vecotor zu erstellen, und abzufragen ob ein Wert rein darf oder nicht, aber das erscheint mir als zu umständlich.. gibts für diesen fall einen kürzeren Weg?</p>
<p>So siehts bis jetz aus:</p>
<pre><code class="language-cpp">//Löschen
	void removeline()
    {
        typedef std::vector&lt;int&gt; intvector;

        intvector intv;
        intvector::const_iterator inti;

        std::cout&lt;&lt;&quot;Welche Zeilen sollen geloescht werden?: \n\n&quot;;

        int eingabe;

        while (std::cin &gt;&gt; eingabe &amp;&amp; eingabe != 999 )
        {
            intv.push_back(eingabe);    
        }

        linevector::iterator li;
        for (inti=intv.begin(); inti!=intv.end(); inti++)
        {
            li = lv.begin() + *inti; //Iteratoren von außen
            lv.erase(li);

        }

		 for (li=lv.begin(); li!=lv.end(); li++)
		 {
			 std::cout &lt;&lt; *li &lt;&lt; std::endl;
		 }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1180925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180925</guid><dc:creator><![CDATA[travelflo22]]></dc:creator><pubDate>Fri, 24 Nov 2006 19:41:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Sun, 26 Nov 2006 15:36:30 GMT]]></title><description><![CDATA[<p>Ne Möglichkeit wäre die zu löschenden Elemente mit einer bestimmten Zahl zu überschreiben und dann nachher alle Elemente mit dieser Zahl zu löschen ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1181725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1181725</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 26 Nov 2006 15:36:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Mon, 27 Nov 2006 11:22:28 GMT]]></title><description><![CDATA[<p>In einem anderen thread gab es die Frage schon einmal:<br />
erase gibt den neuen Iterator zurück</p>
<pre><code class="language-cpp">it = lv.erase(it);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1182197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182197</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Mon, 27 Nov 2006 11:22:28 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Mon, 27 Nov 2006 11:56:55 GMT]]></title><description><![CDATA[<p>Eventuell kannst du auch std::remove_if verwenden - nämlich dann wenn du die &quot;entfernen ja oder nein?&quot; Bedingung als Predicate definieren kannst welches als Parameter eben nur den String bekommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182220</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 27 Nov 2006 11:56:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wie auf lokale Iteratoren außerhalb einer Funktion explizit zugreifen? + Zusatz... on Mon, 27 Nov 2006 12:05:49 GMT]]></title><description><![CDATA[<p>Th schrieb:</p>
<blockquote>
<p>In einem anderen thread gab es die Frage schon einmal:<br />
erase gibt den neuen Iterator zurück</p>
<pre><code class="language-cpp">it = lv.erase(it);
</code></pre>
</blockquote>
<p>Aber die Elemente werden trotzdem verschoben und die Positionsangaben im vector würden nicht mehr stimmen... Oder sehe ich da was falsch ???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1182227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1182227</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 27 Nov 2006 12:05:49 GMT</pubDate></item></channel></rss>