<?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[Segmantationfault trotz einfacher Datentypen]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>folgende Klassenstruktur besteht:</p>
<pre><code class="language-cpp">class Address
{
	private:
		std::string city;
		std::string street;
		std::string zip;
		std::string country;

	public:
		Address();
		Address(const std::string&amp; street, const std::string&amp; city, const std::string&amp; zip,const std::string&amp; country);

	public:
	// getter und setter

};

std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const Address&amp; adress);
</code></pre>
<p>Zuweisungen ueber die Initialisierungsliste des Ctors.<br />
Zur Uebersicht lass ich das mal raus.</p>
<pre><code class="language-cpp">class Person
{
private:

    Address address;

public:
	Person(const Address&amp; birthAdress, char sex);
};
</code></pre>
<p>Zuweisungen hier ueber die Initialisierungsliste des Ctors.</p>
<pre><code class="language-cpp">class Student : public Person
{
private:
	Address homeAddress;

public:
	Student(const Address&amp; homeAddress, const Address&amp; address);
};

Student::Student(const Address&amp; homeAddress,const Address&amp; address)
: Person(address,'w')
{}
</code></pre>
<p>Wenn ich eine Person nun ueber</p>
<pre><code class="language-cpp">Address s1(&quot;asd&quot;,&quot;asd&quot;,&quot;asd&quot;,&quot;dasd&quot;);
Address s2(s1);
Student s(s1,s2);
</code></pre>
<p>Krieg ich einen Segmentation Fault an der Stelle wo der Ctor der Person aufgerufen wird und dort der Copy-Ctor der Addresse.<br />
Eigentlich duerfte er doch dort NULL-Probleme haben das zu kopieren oder nicht?<br />
Wenn ich den CopyCtor implementiere, laeuft alles wunderbar.</p>
<p>Bitte nicht ueber das Klassendesign diskutieren weil ich habe ne Menge Informationen rausgelassen die nicht von belangen fuer das Problem sind.<br />
Hoffe ihr habt eine Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297809/segmantationfault-trotz-einfacher-datentypen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 06:39:42 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297809.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Jan 2012 13:40:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 13:40:06 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>folgende Klassenstruktur besteht:</p>
<pre><code class="language-cpp">class Address
{
	private:
		std::string city;
		std::string street;
		std::string zip;
		std::string country;

	public:
		Address();
		Address(const std::string&amp; street, const std::string&amp; city, const std::string&amp; zip,const std::string&amp; country);

	public:
	// getter und setter

};

std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const Address&amp; adress);
</code></pre>
<p>Zuweisungen ueber die Initialisierungsliste des Ctors.<br />
Zur Uebersicht lass ich das mal raus.</p>
<pre><code class="language-cpp">class Person
{
private:

    Address address;

public:
	Person(const Address&amp; birthAdress, char sex);
};
</code></pre>
<p>Zuweisungen hier ueber die Initialisierungsliste des Ctors.</p>
<pre><code class="language-cpp">class Student : public Person
{
private:
	Address homeAddress;

public:
	Student(const Address&amp; homeAddress, const Address&amp; address);
};

Student::Student(const Address&amp; homeAddress,const Address&amp; address)
: Person(address,'w')
{}
</code></pre>
<p>Wenn ich eine Person nun ueber</p>
<pre><code class="language-cpp">Address s1(&quot;asd&quot;,&quot;asd&quot;,&quot;asd&quot;,&quot;dasd&quot;);
Address s2(s1);
Student s(s1,s2);
</code></pre>
<p>Krieg ich einen Segmentation Fault an der Stelle wo der Ctor der Person aufgerufen wird und dort der Copy-Ctor der Addresse.<br />
Eigentlich duerfte er doch dort NULL-Probleme haben das zu kopieren oder nicht?<br />
Wenn ich den CopyCtor implementiere, laeuft alles wunderbar.</p>
<p>Bitte nicht ueber das Klassendesign diskutieren weil ich habe ne Menge Informationen rausgelassen die nicht von belangen fuer das Problem sind.<br />
Hoffe ihr habt eine Idee.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164850</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 07 Jan 2012 13:40:06 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 13:47:48 GMT]]></title><description><![CDATA[<p>Hast du wirklich nur <code>std::string</code> -Member? Falls ja, ist vielleicht was kaputt. Neu kompilieren/neues Projekt versuchen. Und sicherstellen, dass es sich um ein Minimalbeispiel handelt, nicht dass du an einem anderen Ort UB erzeugst.</p>
<p>Wie sieht denn dein selbstgeschriebener Kopierkonstruktor aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164855</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 07 Jan 2012 13:47:48 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 13:51:57 GMT]]></title><description><![CDATA[<p>In der Addresse sind ausschliesslich std::string Attribute.</p>
<p>Ich hab mal zwei Varianten des CopyCtor ausprobiert</p>
<pre><code class="language-cpp">Address::Address(const Address&amp; a)
: city(a.city), street(a.street), zip(a.zip), country(a.country)
{

}
</code></pre>
<p>Der fuehrt auch zu nem Seg-Fault.</p>
<pre><code class="language-cpp">[/cpAddress::Address(const Address&amp; a)
{
	this-&gt;zip = a.zip;
	this-&gt;country = a.country;
	this-&gt;street = a.street;
	this-&gt;city = a.city;
}
</code></pre>
<p>Dieser nicht.</p>
<p>Ich hab das ganze Projekt mal mit Visual Studio compiliert und ausgefuhert, ohne Copy Ctor, da lief es.<br />
Dann hab ich es noch unter Linux compiliert und ausgefuehrt, auch wieder Seg-Fault</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164858</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 07 Jan 2012 13:51:57 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 13:58:49 GMT]]></title><description><![CDATA[<p>Compiler und Version?<br />
Sieht auf jeden Fall nach gültigem C++ aus. Versuch das Ganze mal noch weiter zu reduzieren und den kompletten Code hier zu posten, ggf. müsstest du einen Bug melden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164861</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 07 Jan 2012 13:58:49 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 14:16:34 GMT]]></title><description><![CDATA[<p>Ok Ich hab es jetzt auf ein Ultimatives Minimal Beispiel runtergebrochen:</p>
<pre><code class="language-cpp">#ifndef ADDRESS_H_INCLUDED
#define ADDRESS_H_INCLUDED

#include &lt;string&gt;
#include &lt;sstream&gt;
#include &lt;ostream&gt;

class Address
{
	private:
		std::string city;
		std::string street;
		std::string zip;
		std::string country;

	public:
		Address();
		Address(const std::string&amp; street, const std::string&amp; city, const std::string&amp; zip,const std::string&amp; country);

	public:
		const std::string&amp; get_city() const;
		const std::string&amp; get_street() const;
		const std::string&amp; get_zip() const;
		const std::string&amp; get_country() const;

		void set_city(const std::string&amp; city);
		void set_street(const std::string&amp; street);
		void set_zip(const std::string&amp; zip);
		void set_country(const std::string&amp; country);

};

std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const Address&amp; adress);

#endif // ADDRESS_H_INCLUDED
</code></pre>
<pre><code class="language-cpp">#ifndef PERSON_H_INCLUDED
#define PERSON_H_INCLUDED

#include &lt;vector&gt;

#include &quot;Address.h&quot;
#include &quot;Date.h&quot;
#include &quot;Name.h&quot;
#include &quot;Phone.h&quot;

#include &quot;AddressGenerator.h&quot;
#include &quot;NameGenerator.h&quot;

class Person
{
private:
    Address birthAddress;
public:
		Person(const Address&amp; birthAdress);

    virtual void print_to(std::ostream&amp; os) const = 0;

};

std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const Person&amp; person);

#endif // PERSON_H_INCLUDED

#include &quot;Person.h&quot;

Person::Person(const Address&amp; birthAdress)
: birthAddress(birthAddress)
{
}

void Person::print_to(std::ostream&amp; os) const
{
	os&lt;&lt;&quot;### Personendaten ###&quot;&lt;&lt;std::endl

		&lt;&lt;&quot;Adresse - &quot;&lt;&lt;this-&gt;birthAddress&lt;&lt;std::endl;
}
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const Person&amp; person)
{
	person.print_to(os);
	return os;
}
</code></pre>
<pre><code class="language-cpp">#ifndef STUDENT_H
#define STUDENT_H

#include &quot;Person.h&quot;
#include &lt;tr1/memory&gt;

class Student : public Person
{
private:
		Address homeAddress;

public:
		Student(const Address&amp; homeAddress, const Address&amp; address);

		virtual void print_to(std::ostream&amp; os) const;
};

#endif // STUDENT_H

#include &quot;Student.h&quot;

Student::Student(const Address&amp; homeAddress,const Address&amp; address)
: Person(address),
 homeAddress(homeAddress)
{}

void Student::print_to(std::ostream&amp; os) const
{
	os&lt;&lt;&quot;#### Studentendaten ####&quot;&lt;&lt;std::endl
	&lt;&lt;&quot;Heimatanschrift - &quot;&lt;&lt;this-&gt;homeAddress&lt;&lt;std::endl;

	Person::print_to(os);

}
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;Student.h&quot;

int main()
{
	Address s1(&quot;asd&quot;,&quot;asd&quot;,&quot;asd&quot;,&quot;dasd&quot;);
	Address s2(s1);
	Student s(s1,s2);
	std::cout&lt;&lt;s;

}
</code></pre>
<p>Compiler GCC Version: 4.4.1 glaube ich.</p>
<p>Das ist der Code den ich gerade ausgefuehrt habe und der fuehrt zum Fehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164870</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 07 Jan 2012 14:16:34 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 14:19:44 GMT]]></title><description><![CDATA[<p>Was passiert, wenn du die Address Member reduzierst (= nur ein String), die Getter/Setter rausnimmst (ich seh zumindest nicht, wo die verwendet werden) usw.? Der komplette Code ist das auch nicht, die ganzen Header aus Person.h finde ich hier nicht, Address.cpp fehlt auch.</p>
<p>Minimal compilierbares Beispiel = ALLER Code, aber nacheinander alles rausnehmen, was nicht verantwortlich scheint.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164872</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 07 Jan 2012 14:19:44 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 14:24:36 GMT]]></title><description><![CDATA[<p>Boah wie daemlich muss man sein.</p>
<pre><code class="language-cpp">Person::Person(const Address&amp; birthAdress)
: birthAddress(birthAddress)
{
}
</code></pre>
<p>Fehler gefunden: &quot;birthAddress(birthAddress)&quot;<br />
Der Parameter heisst aber &quot;birthA<strong>d</strong>ress&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164875</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164875</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 07 Jan 2012 14:24:36 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 14:37:44 GMT]]></title><description><![CDATA[<p>autsch <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="😉"
    /><br />
Reduktion aufs Wesentliche hat demnach geholfen? <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/2164882</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164882</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 07 Jan 2012 14:37:44 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 14:39:54 GMT]]></title><description><![CDATA[<p>in c++ hängt man gewöhnlich bei membervariablen einen unterstrich dran, dann fällt das auch schneller auf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164883</guid><dc:creator><![CDATA[_]]></dc:creator><pubDate>Sat, 07 Jan 2012 14:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 16:16:28 GMT]]></title><description><![CDATA[<p>_ schrieb:</p>
<blockquote>
<p>in c++ hängt man gewöhnlich bei membervariablen einen unterstrich dran</p>
</blockquote>
<p>Nö, das ist Konventionssache. Manche machen es so, (viele) andere machen es nicht.</p>
<p>Mich wundert nur, dass keiner der Compiler da wenigstens ne Warnung rausgehauen hat, dass ein Member mit sich selbst initialisiert werden sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164918</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 07 Jan 2012 16:16:28 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 16:20:31 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Mich wundert nur, dass keiner der Compiler da wenigstens ne Warnung rausgehauen hat, dass ein Member mit sich selbst initialisiert werden sollte.</p>
</blockquote>
<p>Es wird wahrcheinlich mal wieder ohne Warnungen gearbeitet. Eine Warnung zu nicht benutzten Funktionsparametern kommt evtl. auch noch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2164921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164921</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 07 Jan 2012 16:20:31 GMT</pubDate></item><item><title><![CDATA[Reply to Segmantationfault trotz einfacher Datentypen on Sat, 07 Jan 2012 16:20:52 GMT]]></title><description><![CDATA[<p>Ja Reduktion hat geholfen <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>
<p>Wie peinlich man <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/2164922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2164922</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Sat, 07 Jan 2012 16:20:52 GMT</pubDate></item></channel></rss>