Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

21

31.12.2011, 13:57

Was mache ich zu Hölle noch mal falsch?

Ich sags mal so: Hättest du vor 150 Jahren gelebt, hättest du vermutlich ein Flugzeug gebaut und wärst damit über eine Klippe gefahren, ohne dir vorher Gedanken über Aerodynamik gemacht zu haben. Und ja, es hätte dich umgebracht.
Nur weil am PC vermeintlich nichts passieren kann, solltest du trotzdem nicht wie wild mit irgendeinem Zeug rumfuchteln, dass du nichtmal im Ansatz verstanden hast. Das ist so, als ob du mit Gewalt 20 Löcher in eine Steinwand bohrst, um zu gucken, welche Größe du brauchst, aber die ganze Zeit einen Holzbohrer verwendest. Die anderen Analogien darfst du dir jetzt selber ausdenken.

So wird das nie etwas. Du musst schon wissen, was du tust. Bevor du nicht den Unterschied zwischen char* und char verstanden hast, bevor du nicht weißt, was ein * oder & macht, was call-by-value und call-by-reference bedeutet, benutze es nicht. Böse gesagt, verschwendest du nur die Zeit der Community mit deinen sinnlosen Fragen. Komm wieder, wenn du ein Buch gelesen hast, du kannst gerne nachfragen, wenn du Details von bestimmten Konzepten nicht verstehst, aber erwarte nicht, dass wir dir programmieren bei bringen, das musst du ganz alleine lernen.

Und lies den Artikel über gute Fragen, auch wenn er lang ist.
Lieber dumm fragen, als dumm bleiben!

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

22

31.12.2011, 13:58

Und wieso wird einem das komische mit Kopie und bla und sowas nicht direkt dabei erklärt, wenn man etwas über OOP bei C++ liest?

Da könntest du genau so fragen wieso die Addition nicht in einem Mathematikbuch für die Überstufe erklärt wird...
Kennen wir deine Quellen? Wenn sie so schlecht sind musst du dir andere suchen :rolleyes:
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

23

31.12.2011, 14:04

Problem gelöst!
Ich habe einfach die Methode fillIn() als Person deklariert und einfach ein Objekt des Typs Person von zurückgegeben.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Person person = fillIn(firstName, lastName, age, birthday); // Deklaration

//==============

Person fillIn(string firstName, string lastName, string age, string birthday)
{
    Person person;
    person.setAttribute(1, firstName);
    // cout << firstName << " | " << firstHandler << endl;
    person.setAttribute(2, lastName);
    // cout << lastName << " | " << secondHandler << endl;
    person.setAttribute(3, age);
    person.setAttribute(4, birthday);
    return person;
}


Maik

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

24

31.12.2011, 14:56

Haua, haua, haua, haua... ja, das geht. Aber ich wette, dass Dir nicht klar ist WIESO.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

25

31.12.2011, 21:02

Haua, haua, haua, haua... ja, das geht. Aber ich wette, dass Dir nicht klar ist WIESO.



Doch!

Die Variable "person" beinhaltet den Rückgabewert bzw. das Rückgabewert der Funktion fillIn() die als Rückgabewert ein Objekt des Typs Person zurückgibt. Die Variable selber ist auch als Objekt des Typs Person deklariert. In der Funktion erstelle ich eine neue Instanz von Person und mache meine arbeiten und gebe es am Ende zurück.
In der Variable steht nun das veränderte Objekt der fillIn() Methode.

So wie ich gelesen habe, hätte ich das ganze auch mit

C-/C++-Quelltext

1
Person person = new Person();

deklarieren können und nachher mit einem Zeiger "->" auf die Methoden und Attribute zugegriffen.

Wenn ich falsch gedacht habe, sagt mir bescheid. Ich lerne aus Fehlern mehr als aus Büchern, aber ein Buch sollte doch da sein. Kommt ja bald. Ich hatte auch nicht erwartet, dass die Community mir das Programmieren beibringt. Mittlerweile weiß ich wie ich Namespaces verwende, Klassen schreibe und switch-case verwende. Sachen wie char* und char werde ich sicher noch lernen.

Danke für eure Hilfe und nein, ich sehe eure Beiträge nicht als Verhöhnung, sondern als Wissen darüber, was ich wirklich kann. Momentan kann ich nämlich gar nichts mit C++ anfangen, außer Konsolenprogramme schreiben und mithilfe der Doku auch ein kleines Qt4 Fenster zusammenbasteln. Aber erst werde ich mich mit Konsolen aufhalten.

Maik

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

26

31.12.2011, 21:40

Ja, Du hast etwas falsch gedacht. Dein Code funktioniert nur dank Copy-Konstruktoren und wird bei einem anderen Fall nicht mehr auf diese Art funktionieren (sobald Dir die Standard-Kontainer nicht mehr ein eventuell notwendiges Deep-Copy abnehmen). Davon mal abgesehen nutzt Du die Funktion offensichtlich nur, weil Du Call by Reference und Call by Value nicht verstanden hast. Du umgehst damit das Problem, löst aber die Ursache nicht - nämlich mangelndes Wissen.

Auch ist Dein Beispiel mit "new" syntaktisch falsch und Deine Erklärung davon zeigt, dass Du Speicherallokation und Pointer noch nicht vollständig (falls überhaupt) verstanden hast. Ein Grundlagenbuch ist Dir wirklich dringend zu empfehlen!
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

27

01.01.2012, 02:34

Beachte die Reihenfolge. So lange du nicht den Unterschied zwischen char und char* kennst, macht es keinen Sinn, Klassen oder gar Qt zu benutzen.

Bitte hör auf, hier so Fragen zu stellen. Das nervt nur. Fang vorne an oder lass es bleiben. Wenn du auf das Buch wartest, such in halt in der Zeit ein C++ ANFÄNGERtutorial. Alles andere bringt nichts, und verschwendet nur unser aller Zeit.

Ansich ist es auch nicht verkehrt, erstmal auf OOP zu verzichten und rein prozedural zu programmieren. Damit man wenigstens mal verstanden hat, wie Funktionen aufgerufen werden, und was Zeiger sind.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige