Problem mit einer globalen Variabel: struct verzeichnis{int a,int b};
-
Hallo Leute,
folgendes Problem:
Ich habe eine Struktur verzeichnis erstellt:struct verzeichnis { char vorname[80]; char name[80]; char telefon[20]; };Danach habe ich eine globale Variable mit diesem Dateityp erstellt:
verzeichnis tbuch[100];Das hat alles wunderbar geklappt. Ich kann von überall aus meinem Programm auf tbuch zugreifen. Lagere ich jetzt aber einen Programmteil aus:
/*************************************************************************** Alle Einträge des Telefonbuch anzeigen ***************************************************************************/ #ifndef alleAnzeigenH #define alleAnzeigenH void alleAnzeigen(int); #endif/*************************************************************************** Alle Einträge des Telefonbuch anzeigen ***************************************************************************/ #include <iostream> #include <cstdlib> using namespace std; #include "tepe.h" #include "warten.h" void alleAnzeigen(int index){ tepe(index); cout<<'\n'; for(int i=0;i<index;i++){ cout<<(i+1)<<". "; cout<<tbuch[i].vorname<<", "; cout<<tbuch[i].name<<": "; cout<<tbuch[i].telefon<<endl; } warten(); }So kommt es zu folgender Fehlermeldung:
.../src/alleAnzeigen.cpp:19: error: 'tbuch' was not declared in this scopeNun bin ich hingegangen und habe den Code für das erstellen der Struktur und das festlegen der Variablen mit in die neu Datei kopiert. Nun kommt es zu folgenden Fehler:
.../src/einsendeaufgabe_cpli4a_teil1.cpp:36: multiple definition of `tbuch'Was mache ich falsch? Bzw wie macht man es besser?
Gruß
Matthias
-
mtepe schrieb:
...Danach habe ich eine globale Variable mit diesem Dateityp erstellt...
Mal ganz davon abgesehen das globale Variablen pfui sind, es andere Alternativen dazu gibt, und ein Array (gerade bei einem Telefonbuch) lieber durch ein STL-Container ausgetauscht gehört...
Im Header extern deklarieren, im entsprechenden Source definierenZu den erstgenannten Fehler ist meine Glaskugel leider zu schwach, ohne weiteren Source.
Zudem Frage ich mich warum du C-Strings verwendest, wenn du schon mit Namensräumen etc. hantierst. Warum keine std::string? Irgendwie sieht der Code eher als C in C++ aus...
-
Ich habe erst vor 2Wochen mit dem Programmieren begonnen. Habe bis jetzt mit STL-Container und Header noch nichts programmiert. Habe hier Lernunterlagen die ich der Reihe nach am durcharbeiten bin

-
mtepe schrieb:
Ich habe erst vor 2Wochen mit dem Programmieren begonnen. Habe bis jetzt mit STL-Container und Header noch nichts programmiert. Habe hier Lernunterlagen die ich der Reihe nach am durcharbeiten bin

Das nicht unbedingt bei allen unterlagen die Standardcontainer am Anfang behandelt werden, okay (Auch wenn ich zumindestens den vector relativ an den Anfang setzen würde). Aber das man mit C-Strings und globalen Variablen beginnt, ist mehr als peinlich (beides gehört in einen C++ Einstieg imho garnicht groß rein, oder nur am Rande erwähnt).
Darf ich mal fragen wie "offiziell" diese Unterlagen sind?
-
Das sind Lernunterlagen von ILS.
Der C++ Lehrgang umfasst 12Lernhefte.
Derzeit bin ich am Ende des 4ten Heft.
-
mtepe schrieb:
Das sind Lernunterlagen von ILS.
Der C++ Lehrgang umfasst 12Lernhefte.
Derzeit bin ich am Ende des 4ten Heft.Darf ich mal Fragen, unter welchem Namen dieser Kurs geführt wird? Weil alle C++ Kurse die ich beim ILS sehe mehr Lektionen haben. Unabhängig davon hoffe ich aber, das die Kosten des Kurses nicht sehr hoch sind (Da scheinbar ein verkappter C-Kurs, wenn man mal von ein paar C++ Features wie namensräumen und iostream absieht)...
-
Hier ist die Lehrgangsbeschreibung. Bei dem 13ten Heft sollte es sich um eine Referenz handeln.
Jedes Heft hat mehrere Lektionen. Meiner Meinung nach sind die Unterlagen garnicht schlecht. Wobei ich keinen Vergleich zu anderen Lernunterlagen habe. Ist auch meine erste Programmiersprache.Gruß
Matthias
-
Ist das als Witz gemeint oder sind meine Vorstellungen so verkehrt? o..0
12 Monate à 9 Stunden und man lernt nicht mal die C++ Standardbibliothek oder C++ Templates, die wohl wichtigsten Eigenschaften der Sprache ...
Von Funktionszeiger/Methodenzeiger konnte ich auch nichts lesen und noch viele andere Dinge.
Dafür grossartig mit KDevelop und QT rumhantieren.Also entweder müssen die den Titel ändern, nämlich das "C++ Programmierer" rausnehmen oder das ist verschwendetes Geld. Da kauft man einen C++ Primer oder lädt die gratis PDFs Thinking in C++ 1&2 herunter und man hat was den C++ Teil betrifft, wahrscheinlich bereits mehr gelernt und das wohl auch noch in kürzerer Zeit.
Das lernen von QT und arbeiten mit KDevelop sollte dann nicht mehr wirklich Schwierigkeiten darstellen, da kann man sich alleine wohl auch einarbeiten. Gibt ja auch genügend Foren, welche einem Hilfe dafür geben.
Ok, am Ende hat man keinen Titel, aber anscheinend geht das Geld in erster Linie für diesen Titel drauf und nicht für die Ausbildung.
Möchte aber noch anmerken:
Ich habe jetzt nur das gezeigte PDF durchgelesen/überflogen. Vielleicht taugt der Kurs was, aber dann ist die Beschreibung in dem PDF meiner Meinung nach miserabel.Grüssli
-
Dravere schrieb:
12 Monate à 9 Stunden und ...
Ich glaube es wurden 9Stunden in der Woche angesetzt nicht im Monat.
Dravere schrieb:
Von Funktionszeiger/Methodenzeiger konnte ich auch nichts lesen
Heft 5: Zeiger und dynamische Speicherverwaltung
Denke das könnte so etwas in der Art sein.
-
Dravere schrieb:
Ist das als Witz gemeint oder sind meine Vorstellungen so verkehrt? o..0
Ich sehe dies ebenso wie du. Falls man vom Lerninhalt in Kombination mit dem "C++" im Namen schließen kann, würde ich dem Kurs im besten Fall als Ungenügend/Mangelhaft ansehen.
Dravere schrieb:
Ok, am Ende hat man keinen Titel, aber anscheinend geht das Geld in erster Linie für diesen Titel drauf und nicht für die Ausbildung.
Du meinst wohl, man hat einen Titel (wenn auch einer der nicht unbedingt viel wert ist).
-
Da steht tatsächlich "geprüft"...

mtepe schrieb:
Heft 5: Zeiger und dynamische Speicherverwaltung
Denke das könnte so etwas in der Art sein.Dass Zeiger behandelt werden, heisst aber nicht, dass Funktions- und Memberfunktionszeiger ebenfalls dran kommen.
mtepe, wenn du C++ ernsthaft beherrschen willst, solltest du dich unbedingt nach einer Alternative umschauen. Und sei es nur ein Internettutorial oder das von Dravere erwähnte PDF...
-
Also mein Plan war es schon als erstes einmal das Fernstudium komplett durch zu arbeiten. Immerhin ist das ja jetzt auch bezahlt. Nach Abschluss kann man durchaus das ein oder andere Tutorial zur Vertiefung in Angriff nehmen.
Das schöne bei den Lernheften ist das Wissen ist ganz gut aufbereitet und zur Lernkontrolle gibt es zu jedem Abschnitt dann auch Übungsaufgaben.Ich erhoffe mir zumindest die Basics mit dem Lehrgang beibringen zu können. Sollte das ganze gut laufen wäre der nächste Schritt ein interessantes Projekt zu finden bei dem man mitwirken kann.... dauert aber sicher noch ein wenig

-
Ein weiteres Argument für den Lehrgang war wohl, dass ich ganz gerne was in der Hand halte zum lesen. Bin absolut kein Fan von PDF. Bin für gute Bücher aber immer offen(am liebsten auf Deutsch).
-
mtepe schrieb:
Bin für gute Bücher aber immer offen(am liebsten auf Deutsch).
Dravere hatte bereits ein gutes Buch genannt:
Dravere schrieb:
Da kauft man einen C++ Primer [...] und man hat was den C++ Teil betrifft, wahrscheinlich bereits mehr gelernt und das wohl auch noch in kürzerer Zeit.
Ich lerne C++ momentan auch mit dem Buch "C++ Primer" und kann es vollends empfehlen :).
-
Ups, hab das wohl falsch gelesen. Habe mir jetzt mal den Primer bestellt. Werde den dann am Anschluss an den Lehrgang mal durcharbeiten.
:xmas1:
-
mtepe schrieb:
Also mein Plan war es schon als erstes einmal das Fernstudium komplett durch zu arbeiten. Immerhin ist das ja jetzt auch bezahlt. Nach Abschluss kann man durchaus das ein oder andere Tutorial zur Vertiefung in Angriff nehmen.
Das Problem an deinen "Fernstudium" ist eher, das du kein C++ lernst. Du lernst C, mit irgendwelchen Ausschnitten von C++. Das Grundverständnis von C++, zumindestens wie man es im modernen Umfeld einsetzt, wird zumindestens nach deinen ersten Fragen und Codeausschnitten nicht behandelt.
mtepe schrieb:
Das schöne bei den Lernheften ist das Wissen ist ganz gut aufbereitet und zur Lernkontrolle gibt es zu jedem Abschnitt dann auch Übungsaufgaben.
Und das schlechte ist, das ein, ich sage mal bös: "schlechter Programmstil" (zumindestens was C++ angeht) gleich mit gelernt wird. Meine Erfahrung ist es, das man schlechte Angewohnheiten nur schwer ablegt...
mtepe schrieb:
Ich erhoffe mir zumindest die Basics mit dem Lehrgang beibringen zu können. Sollte das ganze gut laufen wäre der nächste Schritt ein interessantes Projekt zu finden bei dem man mitwirken kann.... dauert aber sicher noch ein wenig

...Aus diesem Grund rate ich dir, im Anschluß an den Lerngang gleich mit einem richtigen C++ Buch weiter zu arbeiten. Der C++ Primer und das auch kostenlos im Netz erhältliche Thinking in C++ sind hier eine gute Wahl.
cu André
-
mtepe schrieb:
Bin absolut kein Fan von PDF. Bin für gute Bücher aber immer offen(am liebsten auf Deutsch).
Thinking in C++ 1 & 2 kann man übrigens auch als Bücher kaufen, falls man das lieber hat

Grüssli
-
Wenn man Bücher kaufen will wäre es für einen deutschen Anfänger sicher besser auch deutsche Bücher zu kaufen, es sei denn er beherrscht Englisch sehr gut oder will es gleichzeitig lernen.
Mir hat dann das hier am Besten gefallen.
C++ lernen und professionell anwenden | ISBN: 3826617649