<?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[Fehler bei String]]></title><description><![CDATA[<p>Hallo.<br />
Ich fange grade an mit der Klasse &quot;string&quot; zu arbeiten.<br />
Ich habe ein buch in dem steht dass man die iostream.h sowie die string includen muss damit das ganze funzt.</p>
<p>dann habe ich das beispielprogramm von denen abgetippt aber beim compilieren erkennt er einige fehler...wieso???</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;string&gt;
int main()
{
    char ch[] = &quot;Ein char-Array wird eine String Variable!&quot;;
    string str;
//error C2065: 'string' : nichtdeklarierter Bezeichner
//error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'str'
//error C2065: 'str' : nichtdeklarierter Bezeichner
    str = ch;
//error C2440: '=' : 'char [42]' kann nicht in 'int' konvertiert werden
    cout &lt;&lt; str;
    return(1);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/35471/fehler-bei-string</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 12:21:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/35471.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 Mar 2003 10:05:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 10:05:00 GMT]]></title><description><![CDATA[<p>Hallo.<br />
Ich fange grade an mit der Klasse &quot;string&quot; zu arbeiten.<br />
Ich habe ein buch in dem steht dass man die iostream.h sowie die string includen muss damit das ganze funzt.</p>
<p>dann habe ich das beispielprogramm von denen abgetippt aber beim compilieren erkennt er einige fehler...wieso???</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;string&gt;
int main()
{
    char ch[] = &quot;Ein char-Array wird eine String Variable!&quot;;
    string str;
//error C2065: 'string' : nichtdeklarierter Bezeichner
//error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'str'
//error C2065: 'str' : nichtdeklarierter Bezeichner
    str = ch;
//error C2440: '=' : 'char [42]' kann nicht in 'int' konvertiert werden
    cout &lt;&lt; str;
    return(1);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/258830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258830</guid><dc:creator><![CDATA[Peter Piksa]]></dc:creator><pubDate>Sat, 15 Mar 2003 10:05:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 10:08:00 GMT]]></title><description><![CDATA[<p>std::string str;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258831</guid><dc:creator><![CDATA[Peter]]></dc:creator><pubDate>Sat, 15 Mar 2003 10:08:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 10:17:00 GMT]]></title><description><![CDATA[<p>Ok also ich habe das Programm nun wie folgt verändert:</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt;
#include &lt;string&gt;
using namespace std;

int main()
{
    char ch[] = &quot;Ein char-Array wird eine String Variable!&quot;;
    string str;
    str = ch;
    cout &lt;&lt; str;
//error C2679: Binaerer Operator '&lt;&lt;' : Kein Operator definiert, der einen rechtsseitigen Operator vom Typ 'class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt;' akz
eptiert (oder keine geeignete Konvertierung moeglich)
    return(1);
}
</code></pre>
<p>Was bedeutet das denn nun schon wieder? <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="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> <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="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/258832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258832</guid><dc:creator><![CDATA[Peter Piksa]]></dc:creator><pubDate>Sat, 15 Mar 2003 10:17:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 10:20:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/258833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258833</guid><dc:creator><![CDATA[Peter]]></dc:creator><pubDate>Sat, 15 Mar 2003 10:20:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 10:22:00 GMT]]></title><description><![CDATA[<p>Ok vielen Dank es funzt nun.<br />
Aber wieso musste das &quot;.h&quot; weg???<br />
Im buch steht es so beschrieben...<br />
*unwissendist*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258834</guid><dc:creator><![CDATA[Peter Piksa]]></dc:creator><pubDate>Sat, 15 Mar 2003 10:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 10:25:00 GMT]]></title><description><![CDATA[<p><a href="http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=iostream#Answ" rel="nofollow">http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&amp;faq=iostream#Answ</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/258835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258835</guid><dc:creator><![CDATA[Lars]]></dc:creator><pubDate>Sat, 15 Mar 2003 10:25:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 10:32:00 GMT]]></title><description><![CDATA[<p>Danke Lars, ich habe das zwar alles nicht verstanden aber ist trotzdem gut zu wissen.</p>
<p>Jetzt offenbart sich mir ein weiteres Problem mit meinem Programm.<br />
Ich habe eine Classe &quot;ClassCar&quot; und möchte ein Attribut darin abfragen, welches vom Typ String ist. Allerdings will der compiler mir da einen strich durch die Rechnung machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class ClassCar
{
private:
    unsigned short int Status;
    unsigned short int CostPerWeekDay;
    unsigned short int CostPerWeekFinalDay;
    unsigned short int FlatMileageRate;
    unsigned short int BasicChargePerDay;
    string CarName;
    string CarBrand;

public:
    // Get.Set-&gt;Status
    unsigned short int GetStatus()
    {   return(Status); }
    void SetStatus(unsigned short int fkt_Status)
    {   Status = fkt_Status;    }

    // Get.Set-&gt;CostPerWeekDay
    unsigned short int GetCostPerWeekDay()
    {   return(CostPerWeekDay); }
    void SetCostPerWeekDay(unsigned short int fkt_CostPerWeekDay)
    {   CostPerWeekDay = fkt_CostPerWeekDay;    }

    // Get.Set-&gt;CostPerWeekFinalDay
    unsigned short int GetCostPerWeekFinalDay()
    {   return(CostPerWeekFinalDay);    }
    void SetCostPerWeekFinalDay(unsigned short int fkt_CostPerWeekFinalDay)
    {   CostPerWeekFinalDay = fkt_CostPerWeekFinalDay;  }

    // Get.Set-&gt;FlatMileageRate
    unsigned short int GetFlatMileageRate()
    {   return(FlatMileageRate);    }
    void SetFlatMileageRate(unsigned short int fkt_FlatMileageRate)
    {   FlatMileageRate = fkt_FlatMileageRate;  }

    // Get.Set-&gt;BasicChargePerDay
    unsigned short int GetBasicChargePerDay()
    {   return(BasicChargePerDay);  }
    void SetBasicChargePerDay(unsigned short int fkt_BasicChargePerDay)
    {   BasicChargePerDay = fkt_BasicChargePerDay;  }
};

int main()
{
ClassCar obj1;
return(1);
}
</code></pre>
<p>Wie muss ich die Get- und SetMethoden für meine Attribute CarName und CarBrand schreiben!??!?!?!</p>
<p>[ Dieser Beitrag wurde am 15.03.2003 um 11:54 Uhr von <strong>Peter Piksa</strong> editiert. ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258836</guid><dc:creator><![CDATA[Peter Piksa]]></dc:creator><pubDate>Sat, 15 Mar 2003 10:32:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 11:44:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">const std::string &amp;GetString () const {
   return the_string;
}

void SetString (const std::string &amp;neu) {
  the_string = neu;
}
</code></pre>
<p>Du solltest übrigens bei allen GetMethoden, die nichts verändern, ein const dranmachen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258837</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258837</guid><dc:creator><![CDATA[davie]]></dc:creator><pubDate>Sat, 15 Mar 2003 11:44:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 12:05:00 GMT]]></title><description><![CDATA[<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="🙂"
    /> !!!Danke Noesis!!! <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>
<p>Ich habe das ganze aber nun wie folgt geschrieben:</p>
<pre><code class="language-cpp">string GetCarName()
    {   return CarName; }

    void SetCarName(string fkt_CarName)
    {   CarName = fkt_CarName;  }
</code></pre>
<p>Wo genau liegt der Unterschied zu der Version von dir?<br />
bzw warum ist sie besser??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258838</guid><dc:creator><![CDATA[Peter Piksa]]></dc:creator><pubDate>Sat, 15 Mar 2003 12:05:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 12:57:00 GMT]]></title><description><![CDATA[<p>Das nicht immer Kopien von den Strings angelegt werden müssen. Beschäftige dich mal mit Parameterübergabe by-value und by-reference</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258839</guid><dc:creator><![CDATA[Lars]]></dc:creator><pubDate>Sat, 15 Mar 2003 12:57:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 14:48:00 GMT]]></title><description><![CDATA[<p>und mit const</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258840</guid><dc:creator><![CDATA[davie]]></dc:creator><pubDate>Sat, 15 Mar 2003 14:48:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 17:58:00 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// es wird kein String, sondern eine Referenz auf einen String zurückgeben.
// Das const am Ende der Zeile besagt, dass die Funktion nichts an den 
// Attributen der Klasse verändert
const std::string &amp;GetString () const {
   return the_string;
}

// hier wird kein string übergeben, sondern eine Referenz auf einen String.
// Beim Aufruf der Funktion müssen dadurch viel weniger Daten transferiert
// werden. Das heißt dann übrigens call-by-reference im Gegensatz zu 
// call-by-value, was du verwendet hast
void SetString (const std::string &amp;neu) {   
  the_string = neu;
}
</code></pre>
<p>so, ich hoffe das hat dir ein wenig geholfen...</p>
<p>Mfg, smasher1985</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258841</guid><dc:creator><![CDATA[smasher1985]]></dc:creator><pubDate>Sat, 15 Mar 2003 17:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sat, 15 Mar 2003 23:25:00 GMT]]></title><description><![CDATA[<p>Hmmm...eine Referenz ist soweit ich weis wenn man folgendes macht:</p>
<pre><code class="language-cpp">Basisclass &amp;Referenzname = Objektname;
</code></pre>
<p>Nun haben wir aber solch einen Aufbau:</p>
<pre><code class="language-cpp">const std::string &amp;GetString ()
const {   return the_string;   }
</code></pre>
<p>heisst das also dass eine constante Referenz (also die ist nicht mehr veränderbar) zurückgegeben wird und dann im ausführungsteil der funktion auch nichts verändert werden kann oder wie?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258842</guid><dc:creator><![CDATA[Peter Piksa]]></dc:creator><pubDate>Sat, 15 Mar 2003 23:25:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Sun, 16 Mar 2003 10:44:00 GMT]]></title><description><![CDATA[<p>@PeterPiksa: ja, richtig, das heißt es - und das ist ja auch gewünscht so. Denn wenn du dir mit deiner Funktion GetString() den String holst, dann willst du ihn ja nicht verändern. Denn - da es sich um eine Referenz handelt - jede Änderung wirkt sich ja auch auf das Attribut the_string der Klasse aus. Und das soll ja nur änderbar sein über die Funktion SetString(). Deshalb gibt die Funktion eine KONSTANTE String-Referenz zurück, um sicherzustellen, dass der OriginalString nicht an der Funktion SetString() vorbei manipuliert werden kann.</p>
<p>Ein kleines Beispiel:</p>
<pre><code class="language-cpp">// FASSUNG OHNE CONST

std::string &amp;GetString() {
  return the_string;
}

// ...jetzt wäre aber so was möglich...
std::string &amp;strTest = GetString();
strTest = &quot;abc&quot;;      // the_string wird mit verändert und ist jetzt &quot;abc&quot;

// FASSUNG MIT CONST

const std::string &amp;GetString() {
  return the_string;
}

// ...jetzt MUSS die Benutzung so erfolgen...
std::string strTest = GetString();     // String auslesen
SetString(&quot;hallo&quot;);                    // the_string neu belegen
</code></pre>
<p>Verständlich? Ich hoffe, es ist ein bisschen klargeworden <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>Mfg, smasher1985</p>
]]></description><link>https://www.c-plusplus.net/forum/post/258843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/258843</guid><dc:creator><![CDATA[smasher1985]]></dc:creator><pubDate>Sun, 16 Mar 2003 10:44:00 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Fri, 05 Aug 2005 16:17:32 GMT]]></title><description><![CDATA[<p>wtf. Das ist ja toll. sowas will ich auch mal können alta!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846667</guid><dc:creator><![CDATA[non4me]]></dc:creator><pubDate>Fri, 05 Aug 2005 16:17:32 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Wed, 20 May 2009 15:02:30 GMT]]></title><description><![CDATA[<p>Hallo, liebe Coder- Community!</p>
<p>Ich habe ein Problem der folgenden Ordnung:</p>
<p>*<em>Error 1 error C2679: binary '&gt;&gt;' : no operator found which takes a right-hand operand of type 'int <em>' (or there is no acceptable conversion) d:\studium_elotechnik\semester 2\programmieren2\praktikum\convert1_0\convert1_0\convertio1_0.cpp 46 convert1_0</em></em></p>
<p>Ich habe im Studium gerade mit C++ begonnen. In einer ersten Aufgabe, die die grundlegende EA- Formatierung von cin/cout thematisiert, soll ein Programm geschrieben werden, welches es ermöglichen soll, eine Zahl in einem vorher gewählten Format (hex, dec, oct) einzugeben, die dann in den jeweils anderen Formaten ausgegeben wird.</p>
<p>Als Dateien in meinem MS Visual 2008 Projekt habe ich <em>bisher</em> folgende Dateien bzw. den folgenden Quellcode:</p>
<p>Hauptmodul</p>
<pre><code class="language-cpp">/******************************************************************************
** Unter Verwendung der IO- Formatierungen der entsprechenden Funktionen der 
** standard IO- Bibliothek soll die Eingabe einer Zahl in einem vorher gewähl-
** ten Format (hex, dec, oct) erfolgen. Diese soll anschließend in den jeweils
** anderen Formaten ausgegeben werden.
******************************************************************************/

#include&quot;convertio1_0.h&quot;

int main(void)
{
	char *basis = (char *)malloc(sizeof(*basis));
	int *wert = (int *)malloc(sizeof(*wert));

	defsource(wert, basis);

	return(0);
}
</code></pre>
<p>Es folgt die im Hauptmodul inkludierte Header-Datei:</p>
<pre><code class="language-cpp">/******************************************************************************
** Deklarierung der Ein- und Ausgabe einer Zahl.
******************************************************************************/

#ifndef __convertio_h__
#define __convertio_h__

#include&lt;iostream&gt;
#include&lt;stdlib.h&gt;

//Namensraum
using std::cout;
using std::cin;

//Zu kodierende Zahl definieren:
void defsource(int *value, char *basis);

#endif //__convertio_h__
</code></pre>
<p>Und die ihr zugeordnete .cpp- Datei:</p>
<pre><code class="language-cpp">/******************************************************************************
** Implementierung bzw. Definition der Ein- und Ausgabe einer Zahl.
******************************************************************************/	

#include&quot;convertio1_0.h&quot; //Zu definierende IO einbinden

  //STRINGS
    const char *MSG_srcsys = &quot;Enter source system\n&quot; 
		                     &quot;[h]=hex\n&quot; 
						     &quot;[o]=oct\n&quot;
						     &quot;[d]=dec\n&quot;
						     &quot;--------&gt; &quot;;

	const char *MSG_srcval = &quot;Enter value to code: &quot;; 

/**************************************************************************************
** MODUL-/FUNKTIONS-NAME: defsource
** RÜCKGABEWERT________________________________________________________________________
** TYP: void | NAME: ... | ZWECK: ...
**
** PARAMETER___________________________________________________________________________
** 1)  TYP: int  | NAME: value | ZWECK: Eine zu kodierende Zahl
** 2)  TYP: char * | NAME: basis | ZWECK: Adresse eines Steuerzeichens
***************************************************************************************
** Es wird eine Taste abgefragt, die dem Zahlensystem der zu konvertierenden * *Zahl ent-
** spricht. Anschließend wird die dem System entsprechende Zahl eingelesen.
**************************************************************************************/
void defsource(int *value, char *basis)
{
	cout &lt;&lt; MSG_srcsys;
	cin &gt;&gt; basis;

	cout &lt;&lt; MSG_srcval;
	cin &gt;&gt; value;

}
</code></pre>
<p>In der <strong>Zeile 35</strong> der Definition der Funktion <strong>defsource(...)</strong> findet der Compiler den Fehler in der Zuweisung <strong>cin &gt;&gt; value;</strong>. Kommentiere ich diese Zuweisung aus, so wird anstandslos kompiliert.</p>
<p>Ich verfalle hierbei der puren Verzweiflung, da ich mir die Ursache dieses Fehlers bei diesem doch einfachen Programm nicht erklären kann.</p>
<p>Ich habe es in meiner Verzweiflung ua. mit einem Casting der Form</p>
<pre><code class="language-cpp">cin &gt;&gt; (int *) value;
</code></pre>
<p>versucht, woraufhin sich nichts neues ergab.</p>
<p>Ich würde mich sehr freuen, wenn mir jemand sagen könnte, was genau der Grund für diese Fehlermeldung ist und wie man diesen Fehler korrigiert.</p>
<p>Vielen Dank im Voraus</p>
<p>Xeno</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713371</guid><dc:creator><![CDATA[Xenomorphobia]]></dc:creator><pubDate>Wed, 20 May 2009 15:02:30 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Wed, 20 May 2009 15:08:42 GMT]]></title><description><![CDATA[<p>Xenomorphobia schrieb:</p>
<blockquote>
<p>Hallo, liebe Coder- Community!</p>
<p>Ich habe ein Problem der folgenden Ordnung:</p>
</blockquote>
<p>Und auch ein Problem mit: &quot;Wie verwende ich ein Forum&quot;.<br />
1. Für jede Frage ein Thread (Es sei den es gehört wirklich zusammen)<br />
2. Nicht Threads nach jahrelanger Ruhefassung wiederbeleben, gerade auch wenn dieser nichts mit deiner Problematik zu tun hat.</p>
<p><a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">Hier</a> steht ganz weit oben ein Thread namens <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-200753.html" rel="nofollow">Du brauchst Hilfe?</a> lies diesen Bitte durch. Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713379</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 20 May 2009 15:08:42 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Wed, 20 May 2009 15:25:52 GMT]]></title><description><![CDATA[<p>So, aber nun zu deinen Fehler:<br />
Du kannst Zeigern nicht einfach Daten zuweisen. Zudem ist mit Ausnahme von cin/cout das Programm eigentlich reines C:</p>
<p>a) Unter C++ sind Referenzen häufig bessere Alternativen zum Zeiger<br />
b) malloc/free sollte man in C++ mit Vorsicht verwenden (Kein Konstruktor-/Destruktoraufruf...), besser new/delete<br />
c) Zu jedem malloc gehört ein free, zu jedem new ein delete, zu jedem new[] ein delete[]<br />
d) Warum alloziert du überhaupt dynamisch Speicher, ich sehe in deinen Programm keinen Grund dazu.<br />
e) Du solltest statt C-Strings (char*) lieber die string-Klasse verwenden<br />
f) Das void lässt man als Funktionsparameter unter C++ üblicherweise weg.<br />
g) Die main-Funktion macht implizit ein return 0, wenn sie ohne spezielles return das Ende erreicht, daher ist hier ein expliziter Aufruf unnötig.<br />
h) Deine Bezeichner könnten teilweise sprechender sein.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713391</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 20 May 2009 15:25:52 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Wed, 20 May 2009 15:30:13 GMT]]></title><description><![CDATA[<p>i) <code>#include &lt;cstdlib&gt;</code><br />
j) In Headern keine using-Direktiven nutzen (das hebelt die Namensräume in allen Dateien aus, die deinen Header includen)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713395</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713395</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 20 May 2009 15:30:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Wed, 20 May 2009 16:01:16 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Und auch ein Problem mit: &quot;Wie verwende ich ein Forum&quot;.<br />
1. Für jede Frage ein Thread (Es sei den es gehört wirklich zusammen)<br />
2. Nicht Threads nach jahrelanger Ruhefassung wiederbeleben, gerade auch wenn dieser nichts mit deiner Problematik zu tun hat.</p>
</blockquote>
<p>Zunächst zu meiner Verteidigung:</p>
<p>Ich habe die Suchfunktion dieses Forums genutzt. Als Suchbegriff habe ich <strong>error C2679</strong> angegeben. Gerade weil ich eigentlich kein Problem mit der Nutzung eines Forums habe, habe ich nach einem Thread gesucht, der diesen Fehler bahndelt.</p>
<p>Gut, wenn ich da in meiner Not doch etwas falsch gemacht habe, entschuldige ich mich natürlich dafür. Dann möge der Moderator meinen ersten Hilferuf entsprechend verschieben.</p>
<p>Trotzdem bedanke ich mich für den Hinweis!</p>
<p>asc schrieb:</p>
<blockquote>
<p>Du kannst Zeigern nicht einfach Daten zuweisen. Zudem ist mit Ausnahme von cin/cout das Programm eigentlich reines C:</p>
</blockquote>
<p>Ja! Ich wurde 1 und ein halbes Semester mit C konfrontiert. Wir hätten nach Plan normalerweise seit Anfang März 09 (Beginn des 2. Semesters) mit C++ beginnen müssen - nun kommt es eben etwas später und damit unter Zeitdruckdruck bzw. flüchtiger.</p>
<p>Mich hat irritiert, das gerade die Zeile</p>
<pre><code class="language-cpp">cin &gt;&gt; value;
</code></pre>
<p>bemängelt, die darüber und nach einem Zeichen fragende Anweisung aber problemlos scheint.</p>
<p>asc schrieb:</p>
<blockquote>
<p>b) malloc/free sollte man in C++ mit Vorsicht verwenden (Kein Konstruktor-/Destruktoraufruf...), besser new/delete</p>
</blockquote>
<p>Das habe ich, weil gelesen, erfolglos versucht.</p>
<p><strong>Andre</strong>, ich gebe dir in den übrigen Punkten recht - C ist noch zu present.<br />
Das ich so intensiv dynamisch Speicher alloziiere kommt daher, dass ich auch schon in C lieber mit Zeigern programmierte als &quot;call by value&quot; zu nutzen - uns wurden ja auch die Vorteile der Zeiger nicht vorenthalten. Ich ging bisher immer davon aus, dass für Zeiger manuell Speicher adressiert/freigegeben werden sollte - der Übertragbarkeit der Programme wegen.</p>
<p>Ich danke Dir und <strong>unskilled</strong> für die Hilfestellung (ich probiere es entsprechend mal aus) und werde mal versuchen, C abzuschütteln</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713408</guid><dc:creator><![CDATA[Xenomorphobia]]></dc:creator><pubDate>Wed, 20 May 2009 16:01:16 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Wed, 20 May 2009 16:56:02 GMT]]></title><description><![CDATA[<p>Xenomorphobia schrieb:</p>
<blockquote>
<p>Ich habe die Suchfunktion dieses Forums genutzt. Als Suchbegriff habe ich <strong>error C2679</strong> angegeben. Gerade weil ich eigentlich kein Problem mit der Nutzung eines Forums habe, habe ich nach einem Thread gesucht, der diesen Fehler bahndelt.</p>
</blockquote>
<p>Normalerweise erstellt man allerdings einen neuen Thread, unter Umständen kann man den anderen verlinken. Aber sehr gut, dass du die Suchfunktion benutzt hast, das machen nämlich nicht gerade viele. <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>
<p>Xenomorphobia schrieb:</p>
<blockquote>
<p>Ich ging bisher immer davon aus, dass für Zeiger manuell Speicher adressiert/freigegeben werden sollte - der Übertragbarkeit der Programme wegen.</p>
</blockquote>
<p>Nein, Abstraktion schränkt die Portabilität normalerweise nicht ein - sofern du dabei standardkonform bleibst.</p>
<p>In C++ hantiert man im Anwendungscode eigentlich eher selten mit rohen Zeigern - zumindest viel seltener als in C. Containerklassen nehmen einem die Speicherverwaltung mehrerer dynamischer Objekte ab. Zudem kann man die meisten Variablen, gerade von Typen wie <code>int</code> oder <code>char</code> , auf dem Stack anlegen - wie schon in C. Das ist nicht nur schneller, sondern auch sicherer. Und für einen <code>int</code> lohnt sich der Overhead eines Zeigers bestimmt nicht - man verschwendet nur Speicher, Rechenzeit und verliert Sicherheit. Es sei denn, man braucht tatsächlich einen Zeiger aufgrund einer gewünschten Funktionalität.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713419</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 20 May 2009 16:56:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler bei String on Wed, 20 May 2009 19:22:41 GMT]]></title><description><![CDATA[<p>Xenomorphobia schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>b) malloc/free sollte man in C++ mit Vorsicht verwenden (Kein Konstruktor-/Destruktoraufruf...), besser new/delete</p>
</blockquote>
<p>Das habe ich, weil gelesen, erfolglos versucht.</p>
</blockquote>
<p>Würdest du auch sagen, was der Misserfolg war?</p>
<pre><code class="language-cpp">// Auch wenn die dynamische Reservierung in deinen Fall für überflüssig halte
char * pc = new char[20]; // Verwendung von new[] bei Arrays
delete pc[];              // Freigabe mittels delete[]

int * pi = new int(0); // Verwendung von new für Einzelwerte
delete pi;             // Freigabe mittels delete
</code></pre>
<p>Xenomorphobia schrieb:</p>
<blockquote>
<p>Das ich so intensiv dynamisch Speicher alloziiere kommt daher, dass ich auch schon in C lieber mit Zeigern programmierte als &quot;call by value&quot; zu nutzen - uns wurden ja auch die Vorteile der Zeiger nicht vorenthalten.</p>
</blockquote>
<p>In C++ kann man Referenzen verwenden:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

void foo(
  int &amp; v1,          // Referenzen sind nur Aliasnamen für die Urprungsvariable
  std::string &amp; v2)  // Konkret:
{                    // a) Im Gegensatz zu Zeigern MUSS ein gültiger Wert
    v1 = 10;         //    existieren (NULL ist unzulässig)
    v2 = &quot;abcde&quot;;    // b) Eine Werteänderung über die Referenz ändert die
}                    //    Ursprungsvariable
                     // c) Referenzen lassen sich nicht &quot;umbiegen&quot; 

void foo2(
  int const &amp; v1,          // Referenzen auf konstanten Wert, keine Kopie aber
  std::string const &amp; v2)  // auch keine Änderung möglich
{
  std::cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; a; // Ausgabe von &quot;10 abcde&quot;
}

int main()
{
  int i;
  std::string a;
  foo(i, a);
  foo2(i, a);
}
</code></pre>
<p>Sofern man also keine NULL-Werte zulassen will, und auch kein &quot;umbiegen&quot; (Wie eine Zeigeränderung ja im Gegenzu ermöglicht) sind Referenzen ebenso geeignet. Man sollte tatsächlich Call-By-Value bei nicht Integralen Datentypen verwenden aber Referenzen ermöglichen dies ohne über Zeigerbehandlung nachdenken zu müssen (const &amp; sollte man Verwenden wenn man keine Änderung zulassen will).</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1713515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1713515</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 20 May 2009 19:22:41 GMT</pubDate></item></channel></rss>