Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: C++ (alle ISO-Standards) ::  Die meistgestellten Fragen     Zeige alle Beiträge auf einer Seite Thema geschlossen
Autor Nachricht
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 19:28:14 27.06.2006   Titel:   Die meistgestellten Fragen            Zitieren

Update durch Arcoth: Diese Liste wird momentan recht einstimmig als veraltet betrachtet und ist dementsprechend fortan kein Sticky mehr.

-----------------------------------------------------------

Da im Forum manche Fragen mit einer gewissen Regelmäßigkeit aufkommen, sammle und beantworte ich sie in diesem Thread.



1. Wie kann ich eine richtige Oberfläche programmieren?
2. Wenn ich mein Programm ausführe, passiert gar nichts/flackert nur kurz was auf! Wieso?
3. Ich habe den Code 1:1 aus dem Buch abgeschrieben. Wieso funktioniert der nicht?
4. Ich will mit ganz großen Zahlen rechnen. Wie geht das?
5. Ich hab ein Template. Jetzt bekomm ich aber den Fehler "nicht aufgelöstes externes Symbol". Warum?
6. Ich blicke bei den ganzen Zeichenketten nicht durch. Was soll ich benutzen?
7. Wenn ich Sachen inkludiere, kommen Fehler, in denen "undeclared identifier" oder sowas ähnliches steht. Was tun?
8. Ich will eine Zahl oktal/hexadezimal speichern. Wie geht das?
9. Wieso bekomme ich immer ein "warning: no newline at end of file"?
10. C nicht mit C++ vermischen
11. Was ist der Unterschied zwischen Klassentemplate und Templateklasse?



1. Wie kann ich eine richtige Oberfläche programmieren?

Das Problem bei dieser Frage ist, dass es nicht zu Standard-C++ gehört, GUIs zu programmieren. Da gibt es viele verschiedene Frameworks für. Windows? Da gibt es die WinAPI, aber die ist nicht C++. Die MFC, aber die ist nicht modernes C++ und vor allem nicht kostenfrei. WxWidgets, GTKmm, QT und andere. Linux? Embedded? Es kommt immer darauf an, was man eigentlich will.

Kurzum: Es gibt viele Wege zum Ziel, aber keiner davon führt an den Grundlagen von C++ vorbei. Links gibt es viele, die meisten via Google. In meinen Augen sind die besten Links die Referenzen der o.g. Frameworks, nur dass Referenzen sich am besten lesen, wenn man bereits weiß, was man tut.

Vielen Dank an LordJaxom für diese Antwort.


2. Wenn ich mein Programm ausführe, passiert gar nichts/flackert nur kurz was auf! Wieso?

Schau mal in der Konsolen-FAQ in den Thread Automatisches Schließen verhindern. Desweiteren gibts es (kostenlose) IDEs, die das Problem von selbst lösen. Als Beispiele seien Code::Blocks und Visual C++ 2005 Express Edition genannt.

Eine dritte Methode ist das Erstellen einer Batch-Datei, die das eigentliche Programm aufruft. Das geht unter Windows folgendermaßen:
1. Im Explorer (also der ganz normale Datei-Browser) im Menü auf Extras -> Ordneroptionen.
2. Dann auf "Ansicht" und bei "Erweiterte Einstellungen" den Haken bei "Erweiterung bei bekannten Dateitypen ausblenden" entfernen.
3. OK
4. Datei -> Neu -> Textdokument
5. Einen Namen, der mit ".bat" endet, eingeben, wie z.B. "Starter.bat"
6. Rechtsklick auf die bat-Datei und Bearbeiten auswählen.
7. Im Editor folgendes eingeben:
Code:
meinprogramm.exe
pause

Für "meinprogramm" den Namen des Programms eingeben.
8. Datei speichern und Editor beenden.
9. Doppelklick auf die bat-Datei und das Programm bleibt danach offen!

Als vierte Möglichkeit sei "Open Command Window Here" aus den Windows XP Powertoys genannt. Mit diesem öffnet man schnell eine Konsole in dem gewünschten Verzeichnis und braucht nur noch den Programmnamen einzugeben. Anders als bei den vorherigen Lösungen beendet sich das eigene Programm zwar, die Ausgabe bleibt aber dennoch sichtbar, da die Konsole ja nicht geschlossen wird.



3. Ich habe den Code 1:1 aus dem Buch abgeschrieben. Wieso funktioniert der nicht?

Viele Bücher halten sich nicht an den C++-Standard. Die neueren Compiler allerdings halten ihn schon ziemlich genau ein. Daher kann es sein, dass dein Buch/Tutorial etwas benutzt, was dein Compiler nicht unterstützt. Typische Beispiele:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void main() // oder: main()
// ersetzen durch:
int main()

 
#include <iostream.h>

// ersetzen durch:
#include <iostream>
using namespace std;

 
#include <stdio.h>

// ersetzen durch:
#include <cstdio>
using namespace std;    // analog dazu: assert.h, ctype.h, locale.h, time.h, math.h und weitere

Wenn man die Zeile "using namespace std;" weglässt, wie man es in Header-Dateien machen sollte, muss man den sog. qualifizierten Namen schreiben, d. h. ein "std::" vor den Namen setzen. Beispiel:
C++:
#include <string>
 
std::string foo = "bar"

Anmerkung: Die alten Header existieren auch im Standard noch, sie sind allerdings als "deprecated" gekennzeichnet und man darf sich nicht wundern, wenn der Compiler eine entsprechende Warnung ausgibt.



4. Ich will mit ganz großen Zahlen rechnen. Wie geht das?

Oftmals brauchst du gar nicht mit so großen Zahlen zu rechnen (z. B. wenn dich nur das Verhältnis zweier Zahlen interessiert oder alle Zahlen in einem kleinen Bereich liegen) oder hast noch genug andere Probleme, um die du dich eher kümmern solltest als große Zahlen. Wenn du dir dennoch sicher bist, dass du riesige Zahlen brauchst (größer als 2^64 = 18.446.744.073.709.551.616), kannst du das zum Beispiel mit Gnu MP tun.

Frag jetzt nicht, wie man das mit GMP macht. Dafür gibts die Doku!



5. Ich hab ein Template. Jetzt bekomm ich aber den Fehler "nicht aufgelöstes externes Symbol". Warum?

Meistens kommt diese Frage, wenn der Fragesteller das Template aufgeteilt hat, wie er es von Klassen gewohnt ist: Klassendefinition in eine Header-Datei, Memberdefinitionen in eine entsprechende cpp-Datei. Allerdings ist ein Template nur eine Vorlage, die richtigen Klassen/Funktionen erstellt der Compiler erst beim Kompilieren nach dieser Vorlage. Nun ist es wohl klar, dass dem Compiler dafür die gesamte Vorlage zur Verfügung stehen muss. Er sieht aber nur die zu kompilierende Quellcode-Datei inklusive aller eingebundenen Header (man spricht von einer Übersetzungseinheit), die Definitionen der Member werden deshalb nicht gefunden -> nicht aufgelöstes externes Symbol.

Mögliche Workarounds:
- alles direkt in die Klassendefinition einfügen; das wird bei großen Templates ziemlich unübersichtlich
- am Ende der Header-Datei eine Implementationsdatei inkludieren, in der die Member definiert werden (üblicherweise hat diese die Endung .impl)
- die gewünschten Template-Instanzen explizit definieren
- das Schlüsselwort export benutzen; allerdings gibt es kaum Compiler, die dieses unterstützen



6. Ich blicke bei den ganzen Zeichenketten nicht durch. Was soll ich benutzen?

Anfangs wird man meist mit zwei verschiedenen Typen von Zeichenketten konfrontiert: char* mit den entsprechenden Funktionen in <cstring> (bzw. <string.h>), und string aus <string>.

Benutze am besten den string aus <string>. Der andere Typ wird quasi nur noch für Konstanten verwendet. Wenn dir irgendwann mal langweilig ist, kannst du dir auch diesen mal angucken.

Jetzt gibt es allerdings ein Problem: Die Standardbibliothek arbeitet mit (const) char*. Das merkst du zum Beispiel, wenn du eine Datei öffnen willst:
C++:
string name = "test.txt";
ifstream in(name);  // Fehler!

Den String name muss man erst konvertieren, bevor man ihn bei ifstream verwenden kann. Das sieht dann so aus:
C++:
string name = "test.txt";
ifstream in(name.c_str());

Einen guten Artikel über std::string gibt es im Magazin.



7. Wenn ich Sachen inkludiere, kommen Fehler, in denen "undeclared identifier" oder sowas ähnliches steht. Was tun?

Der Inhalt sämtlicher Standard-Headerdateien (s. dazu auch 3.) liegt im Namespace std. Um dem Compiler zu sagen, dass er auch in diesem Namespace nach Namen suchen soll, schreibt man folgende Zeile (üblicherweise unter den #include-Anweisungen):
C++:
using namespace std;




8. Ich will eine Zahl oktal/hexadezimal speichern. Wie geht das?
Die Fragestellung ist falsch formuliert. Zahlen werden nämlich nicht standardmäßig dezimal gespeichert, sondern dezimal ausgegeben. Intern kann der Computer die Zahlen eh nur binär abspeichern. Also suchst du eine Option, um eine Zahl oktal/hexadezimal auszugeben. Das geht so:
C++:
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
 
int main()
{
    int zahl = 42;
    cout << zahl << endl;
    cout << hex << zahl << endl;
    cout << oct << zahl << endl;
}




9. Wieso bekomme ich immer ein "warning: no newline at end of file"?

Dreimal darfst du raten...

Der Standard empfiehlt, dass eine Quellcode-Datei mit einer leeren Zeile abgeschlossen wird. Der Compiler gcc warnt, wenn das nicht der Fall ist.



10. C nicht mit C++ vermischen
(Danke an CodeFinder für diesen Punkt)

Beispiel a) Casts:
C++:
fstream fStr("C:\\demo.dat");
// ...
unsigned long ulNummer;
fStr.read(reinterpret_cast<char*>(&ulNummer), sizeof(unsigned long)); // C++
// und nicht:
// fStr.read((char*)&ulNummer), sizeof(unsigned long)); // C
// ...


Beispiel b) File Handling:
C++:
// Filestreams statt FILE-Structs
fstream fStr(...); // C++
// und nicht:
// FILE *pFile; // C


Beispiel c) Speicherreservierung:
C++:
// new statt malloc und Kohorten
Typ* tName= new Typ[Anzahl]; // C++
// und nicht:
// Typ* tName = (Typ*)malloc(Anzahl * sizeof(Typ)); // C




11. Was ist der Unterschied zwischen Klassentemplate und Templateklasse?
Wenn man über Templates spricht, ist es manchmal wichtig, eine gemeinsame Terminologie zu haben. Der Ausdruck Klassentemplate beschreibt eine Schablone für eine Familie von Klassen. Templateklasse wird leider auch manchmal als Synonym für Klassentemplate benutzt, bezeichnet aber eigentlich eine Klasse, die aus der Vorlage (dem Template) erzeugt wurde bzw. eine Spezialisierung des Templates.




----------

Anregungen, Kritik und Verbesserungsvorschläge sind erwünscht.

MfG,

Michael E.

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)


Zuletzt bearbeitet von Arcoth am 23:50:21 27.05.2015, insgesamt 14-mal bearbeitet
joomoo
Autor

Benutzerprofil
Anmeldungsdatum: 31.07.2004
Beiträge: 1533
Beitrag joomoo Autor 19:37:25 27.06.2006   Titel:              Zitieren

zu 2.

Würde ich noch hinzufügen:
"Besorg dir einen ordentlichen Compiler, der das automatisch macht!
Visual C++ 6 -> Visual C++ 2005 Express Edition
Dev-C++ -> Code::Blocks"
Ist für Anfänger einfacher. Außerdem funktioniert das in der FAQ mit ignore nicht immer, besser ist mit sync.

mfg.
.filmor
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.05.2005
Beiträge: 2365
Beitrag .filmor Mitglied 19:43:56 27.06.2006   Titel:              Zitieren

Ich glaube nicht, dass man Leuten vorschreiben sollte, welchen Compiler (bzw. hier eher welche GUI) sie verwenden. Der erste Fall ist ja noch verständlich (wenn auch die meisten Anfängerfehler _nichts_ damit zu tun haben), aber Dev-C++ und Code::Blocks verwenden schließlich AFAIK beide den gcc.
Ich könnte genauso gut sagen: "Verwendet gefälligst alle Vim, weil ich das auch tue". Keine gute Idee.

@ Michael E.
Prima Sache, danke für die Arbeit. Wenn das Sticky gemacht wird animiert es vielleicht mehr Nutzer sich vorher zu Informieren als die FAQs (die IMHO _sehr_ unübersichtlich sind).
Ich schau mal, ob ich noch mehr immer wiederkehrende Fragen finde.

/edit:
Bei Pkt. 1 fehlt ein 'e' ;)
Punkt 3 solltest du noch mal überarbeiten. Ein Hinweis darauf, dass man using namespace nicht in Headern macht fehlt und
Zitat:
Als Faustregel gilt, dass aus <xxxxxx.h> ein <cxxxxxx>
stimmt so nicht. Aus iostream.h wurde nicht ciostream, es fehlt der Hinweis darauf, dass die C-Header gemeint sind. Der Teil mit <conio.h> erübrigt sich, wenn der Leser Punkt 2 beherzigt hat.


Zuletzt bearbeitet von .filmor am 19:50:41 27.06.2006, insgesamt 1-mal bearbeitet
joomoo
Autor

Benutzerprofil
Anmeldungsdatum: 31.07.2004
Beiträge: 1533
Beitrag joomoo Autor 19:50:58 27.06.2006   Titel:              Zitieren

.filmor schrieb:
Ich glaube nicht, dass man Leuten vorschreiben sollte, welchen Compiler (bzw. hier eher welche GUI) sie verwenden. Der erste Fall ist ja noch verständlich (wenn auch die meisten Anfängerfehler _nichts_ damit zu tun haben), aber Dev-C++ und Code::Blocks verwenden schließlich AFAIK beide den gcc.


Sry, ich meinte IDE. Und bei Dev-C++ zu Code::Blocks ist halt der Vorteil, das Code::Blocks die Konsole nicht automatisch schließt. Ist vielleicht kein großer Vorteil, trotzdem kriegen es viele Einsteiger nicht hin, bei jedem verlassen im Code, das hinzuschreiben. Vor allem wenn sie mehrere returns in main() haben (oder auch irgentwo ein exit(0) eingebaut haben) sind sie schnell frustriert. Bedenke: ->Anfänger<-fragen. Das sind halt meistens Leute mit Visual C++ 6 und Dev-C++. Das finde ich einfach lästig, wenn die dann mit Code ankommen, wo sie das cin.get() falsch postiert haben.

mfg.
.filmor
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.05.2005
Beiträge: 2365
Beitrag .filmor Mitglied 19:58:57 27.06.2006   Titel:              Zitieren

@joomoo Hast du da ein Beispiel aus diesem Forum für? Ich denke, ein klein bisschen Denken kann man auch von Anfängern erwarten.

@Michael E.
Grundlagen des Dateihandlings mit fstreams und ein Link auf die stringstream-FAQ wären vielleicht noch angebracht.
camper
Moderator

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 7015
Beitrag camper Moderator 20:04:22 27.06.2006   Titel:              Zitieren

.filmor schrieb:
Zitat:
Als Faustregel gilt, dass aus <xxxxxx.h> ein <cxxxxxx>
stimmt so nicht. Aus iostream.h wurde nicht ciostream, es fehlt der Hinweis darauf, dass die C-Header gemeint sind.
das schöne an faustregeln: sie können auch mal falsch sein, ohne falsch zu sein ;) er hat den fall ja schließlich auch bereits im code behandelt. ich halte eher die bemerkung über <string.h> und konsorten für ungünstig. esgeht ja nicht darum, welche header verwendet werden, sondern mit welcher art strings man arbeitet.
LordJaxom
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.11.2005
Beiträge: 5790
Beitrag LordJaxom Mitglied 20:05:57 27.06.2006   Titel:              Zitieren

Häufig gestellt wird im Moment wohl auch

"Ich habe eine Variable [ersetzbar durch Funktion] in meine .h-Datei geschrieben, und bekomme jetzt immer 'Multiple Definition'-Fehler". Quasi der Komplementärfall zu 5. ;)
joomoo
Autor

Benutzerprofil
Anmeldungsdatum: 31.07.2004
Beiträge: 1533
Beitrag joomoo Autor 20:07:45 27.06.2006   Titel:              Zitieren

.filmor schrieb:
@joomoo Hast du da ein Beispiel aus diesem Forum für?

http://www.c-plusplus.de/ ....... -asc-and-start-is-20.html
gab's noch mehr, nur finde ich jetzt nicht auf die schnelle.

Obwohl ich persönlich nicht zu den Leuten gehöre, höre ich hier des öfteren das Dev-C++ totaler schrott sein soll, deswegen ist es doch nicht schlecht einem Anfänger schon gleich ne ordentlich IDE zu geben, oder?

Ich mein: Was spricht denn dagegen den Visual-C++-6-Leuten den neuen 2005er zu empfehlen? Wird hier sowieso sehr oft getan, dann schreiben wir's dazu, oder?

Zitat:
Ich denke, ein klein bisschen Denken kann man auch von Anfängern erwarten.

Wenn du noch nie programmiert hast, ist es erstmal frustierend, dass du schon drei Zeilen, die du 0 verstehst, an die richtige stelle tun sollst, nur damit ein "Hallo Welt" funktioniert. Außerdem muss man das gleiche ja denn bei nem return in main oder einem exit/abort wieder davor packen.

mfg.
Tuxinator
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.06.2006
Beiträge: 22
Beitrag Tuxinator Mitglied 20:08:09 27.06.2006   Titel:              Zitieren

gut, und nun erkläre den anfängern noch klassen und kapselung ;)
.filmor
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.05.2005
Beiträge: 2365
Beitrag .filmor Mitglied 20:31:49 27.06.2006   Titel:              Zitieren

joomoo schrieb:
.filmor schrieb:
@joomoo Hast du da ein Beispiel aus diesem Forum für?

http://www.c-plusplus.de/ ....... -asc-and-start-is-20.html
gab's noch mehr, nur finde ich jetzt nicht auf die schnelle.
Ok, du hast wohl recht.

joomoo schrieb:
Obwohl ich persönlich nicht zu den Leuten gehöre, höre ich hier des öfteren das Dev-C++ totaler schrott sein soll, deswegen ist es doch nicht schlecht einem Anfänger schon gleich ne ordentlich IDE zu geben, oder?
Ich hatte mit Dev-C++ nie wirklich Probleme. Wer meint, dass müsse man demjenigen sagen kann das ja tun, wenn der betreffende fragt.

joomoo schrieb:
Ich mein: Was spricht denn dagegen den Visual-C++-6-Leuten den neuen 2005er zu empfehlen? Wird hier sowieso sehr oft getan, dann schreiben wir's dazu, oder?
Aber meistens wirds da dazu geschrieben, wo es auch passt, nämlich wenn ein Compilerfehler auftritt, der von dem miesen VC6-Compiler herrührt. Diese Fälle sind aber AFAIK (ich benutze schon immer gcc) nicht das, was einem C++-Anfänger direkt vor der Nase rumspringt. Wenn er bei Metaprogrammierung angekommen ist hat er denke ich genug Verständnis dafür, welchen Compiler er nehmen sollte.

joomoo schrieb:
Zitat:
Ich denke, ein klein bisschen Denken kann man auch von Anfängern erwarten.

Wenn du noch nie programmiert hast, ist es erstmal frustierend, dass du schon drei Zeilen, die du 0 verstehst, an die richtige stelle tun sollst, nur damit ein "Hallo Welt" funktioniert. Außerdem muss man das gleiche ja denn bei nem return in main oder einem exit/abort wieder davor packen.
Die drei Zeilen werden in dem Artikel aber sinnvoll in eine Funktion gepackt, die dann sehr leicht verständlich ist.

Tuxinator schrieb:
gut, und nun erkläre den anfängern noch klassen und kapselung ;)
!(OOP == C++) :p
michba
Mitglied

Benutzerprofil
Anmeldungsdatum: 20.08.2005
Beiträge: 575
Beitrag michba Mitglied 20:32:31 27.06.2006   Titel:              Zitieren

Vielleicht noch "Einmal Zahl nach String und zurück" (http://www.c-plusplus.de/forum/viewtopic-var-t-is-39488.html).
Steht zwar in den FAQs auf der ersten Seite, es kommen aber trotzdem regelmäßig Fragen zu dem Thema.
Manchmal frage ich mich, ob überhaupt jemand in die FAQs schaut...

.filmor schrieb:
Ich denke, ein klein bisschen Denken kann man auch von Anfängern erwarten.

:live:

_________________
Re|kur|si|on, die: → Rekursion
Tuxinator
Mitglied

Benutzerprofil
Anmeldungsdatum: 24.06.2006
Beiträge: 22
Beitrag Tuxinator Mitglied 20:38:34 27.06.2006   Titel:              Zitieren

es geht hier um c++,gell?

Zitat:

Vergiss es. Solange du die Grundlagen nicht kannst (und zu den Grundlagen gehört mehr als schon mal ne Klasse erstellt zu haben!), hat es keinen Sinn, sich mit Oberflächen zu beschäftigen.
...
Unregistrierter




Beitrag ... Unregistrierter 20:48:17 27.06.2006   Titel:              Zitieren

Tuxinator schrieb:
es geht hier um c++,gell?

Zitat:

Vergiss es. Solange du die Grundlagen nicht kannst (und zu den Grundlagen gehört mehr als schon mal ne Klasse erstellt zu haben!), hat es keinen Sinn, sich mit Oberflächen zu beschäftigen.


Ja genau, und deshalb sind Klassen fundamental, also überdenke deinen Beitrag besser nochmal.
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 20:50:43 27.06.2006   Titel:              Zitieren

Tuxinator schrieb:
es geht hier um c++,gell?

Zitat:

Vergiss es. Solange du die Grundlagen nicht kannst (und zu den Grundlagen gehört mehr als schon mal ne Klasse erstellt zu haben!), hat es keinen Sinn, sich mit Oberflächen zu beschäftigen.

Jap.


Ich guck mal, was ich noch hinzufüge/entferne. Mein Ziel ist es nämlich nicht, eine große Sammlung zu erstellen, in dem möglichst viele häufig gestellte Fragen beantwortet werden (dafür sind schließlich die FAQ da), sondern einen kleinen Text zu schreiben, der wenn möglich nur das Wichtigste enthält.


Alle Änderungen nehm ich im OP vor.

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
GPC
Global Moderator

Benutzerprofil
Anmeldungsdatum: 11.07.2004
Beiträge: 7431
Beitrag GPC Global Moderator 20:56:20 27.06.2006   Titel:              Zitieren

IMHO solltest du, wenn du das schon machst, vllt. die Top 10 der meistgestellten Fragen rausfinden und in einem Post mit den entsprechenden Einträgen der FAQ verlinken, also:

2) Warum verschwindet mein Konsolenfenster sofort?
...

_________________
"We're rockstars, not lumberjacks" (Axl Rose about Grunge)
joomoo
Autor

Benutzerprofil
Anmeldungsdatum: 31.07.2004
Beiträge: 1533
Beitrag joomoo Autor 21:12:05 27.06.2006   Titel:              Zitieren

.filmor schrieb:
Die drei Zeilen werden in dem Artikel aber sinnvoll in eine Funktion gepackt, die dann sehr leicht verständlich ist.

Was wenn der Anfänger noch nicht (eigene) Funktionen gehabt hat? Ich seh hier meistens nur Leute die cin.get() und system("PAUSE") benutzen, und das wahrscheinlich auch deswegen, weil ihnen der Code aus der FAQ nicht ganz klar wird. Die Funktion wait() muss ja noch in der main-Funktion aufgerufen werden (und zwar vor return, wer noch keine Funktionen hat, weiß das vielleicht auch nicht).
Auch finde ich es total lästig, immer ein wait() an allen meinen programm-abbrüchen einzufügen. Und bei einem assert oder /0 bringst ja dann sowieso nichts mehr.
Deswegen: Was spricht denn dagegen? Man könnte diese IDE-Tipps ja nur als Empfehlung hinschreiben und nichts als zwingende Aufforderung.

mfg.
LordJaxom
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.11.2005
Beiträge: 5790
Beitrag LordJaxom Mitglied 21:22:25 27.06.2006   Titel:              Zitieren

Zu Punkt 6: IMHO müsste es heissen "Die Standardbibliothek arbeitet mit const char*", jedenfalls in dem Zusammenhang.


Zuletzt bearbeitet von LordJaxom am 21:22:41 27.06.2006, insgesamt 1-mal bearbeitet
Swordfish
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 5639
Beitrag Swordfish Mitglied 10:11:11 28.06.2006   Titel:              Zitieren

Hm, ich würd's sinnvoller finden (wegen redundanz u. übersichtlichkeit), wen man im C++-Froum soetwas wie einen "Indexthread" zum FAQ sticky macht in welchem man für bestimmte Probleme auf den/die passende(n) FAQ Threads verweist. Dann würde man sich nämlich die Posts sparen, in denen wieder 'mal jemand meint, er habe in der FAQ gesucht und gesucht und doch nix gefunden (obwohl der Rest der Welt weiß, daß dort steht was er sucht).

Greetz, Swordfish

@chrische: mein ich auch!!

_________________
To the journey! And to those of us who aren't here to celebrate it with us.
camper
Moderator

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 7015
Beitrag camper Moderator 15:40:26 28.06.2006   Titel:              Zitieren

Swordfish schrieb:
Hm, ich würd's sinnvoller finden (wegen redundanz u. übersichtlichkeit), wen man im C++-Froum soetwas wie einen "Indexthread" zum FAQ sticky macht in welchem man für bestimmte Probleme auf den/die passende(n) FAQ Threads verweist. Dann würde man sich nämlich die Posts sparen, in denen wieder 'mal jemand meint, er habe in der FAQ gesucht und gesucht und doch nix gefunden (obwohl der Rest der Welt weiß, daß dort steht was er sucht).

Greetz, Swordfish

@chrische: mein ich auch!!
stiime zu. man kann ja abwägen: wenn die frage in einer zeile zu beantworten ist, kann man sie hier beantworten, sonst nimmt man einen link.
CodeFinder
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.06.2006
Beiträge: 3093
Beitrag CodeFinder Mitglied 15:52:12 28.06.2006   Titel:              Zitieren

Hab noch ne Idee bzgl. des eigentlichen Themas, dieses Threads:

8. C nicht mit C++ vermischen:


Beispiel a) Casts:
C++:
fstream fStr("C:\\demo.dat");
// ...
unsigned long ulNummer;
fStr.read(reinterpret_cast<char*>(&ulNummer), sizeof(unsigned long)); // C++
// und nicht:
// fStr.read((char*)&ulNummer), sizeof(unsigned long)); // C
// ...


Beispiel b) File Handling:
C++:
// Filestreams statt FILE-Structs
fstream fStr(...); // C++
// und nicht:
// FILE *pFile; // C


Beispiel c) Speicherreservierung:
C++:
// new statt malloc und Kohorten
Typ* tName= new Typ[Anzahl]; // C++
// und nicht:
// Typ* tName = (Typ*)malloc(Anzahl * sizeof(Typ)); // C



oder findet ihrs nit so wichtig...? -> Feedback please ;)

Edit: @camper, gute Idee! :live: ...bzgl. der Ptr is mir nur nix anderes eingefallen :rolleyes:

_________________
MfG CodeFinder


Zuletzt bearbeitet von CodeFinder am 16:52:53 28.06.2006, insgesamt 2-mal bearbeitet
camper
Moderator

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 7015
Beitrag camper Moderator 15:59:32 28.06.2006   Titel:              Zitieren

CodeFinder schrieb:
Hab noch ne Idee bzgl. des eigentlichen Themas, dieses Threads:

8. C nicht mit C++ vermischen:


Beispiel a) Casts:
C++:
int i;
long l = 2344234;
i = static_cast<int>(l); // C++
// und nicht:
// i = (int)l; // C


Beispiel b) File Handling:
C++:
// Filestreams statt FILE-Structs
fstream fStr(...); // C++
// und nicht:
// FILE *pFile; // C



oder findet ihrs nit so wichtig...? -> Feedback please ;)
gute idee. dann darf auch malloc(und konsorten)->new nicht fehlen.

edit: bei den C-casts besser ein weniger kontroverses beispiel (also irgendwas was leicht ins auge geht, am besten mit pointern) wählen.


Zuletzt bearbeitet von camper am 16:01:49 28.06.2006, insgesamt 1-mal bearbeitet
CodeFinder
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.06.2006
Beiträge: 3093
Beitrag CodeFinder Mitglied 16:26:57 28.06.2006   Titel:              Zitieren

Jo!, done! ;)

_________________
MfG CodeFinder
camper
Moderator

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 7015
Beitrag camper Moderator 16:30:50 28.06.2006   Titel:              Zitieren

jo, ist ok. da kannst du bei dem beispiel ja gleich punkt a) und b) zusammenführen :) oder gleich alle 3 :D

edit: übrigens:
Code:
Typ* tName = (Typ*)malloc(Anzahl[b]*sizeof(Typ)[/b]);
was gleich als eine begründung herhalten kann :p


Zuletzt bearbeitet von camper am 16:31:57 28.06.2006, insgesamt 1-mal bearbeitet
CodeFinder
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.06.2006
Beiträge: 3093
Beitrag CodeFinder Mitglied 16:49:36 28.06.2006   Titel:              Zitieren

camper schrieb:

edit: übrigens:
Code:
Typ* tName = (Typ*)malloc(Anzahl[b]*sizeof(Typ)[/b]);
was gleich als eine begründung herhalten kann :p


Hähä^^, jo stimmt :o)

_________________
MfG CodeFinder
camper
Moderator

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 7015
Beitrag camper Moderator 17:45:06 29.06.2006   Titel:              Zitieren

frage an die moderatoren: besteht eine chance, diesen tread sticky zu machen, oder soller in der versenkung verschwinden?
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 18:35:11 29.06.2006   Titel:              Zitieren

Ich bin dafür, dass noch en bisschen gesammelt/überarbeitet wird und schließlich alles in einem Post zusammengefasst wird.

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
HumeSikkins
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.08.2000
Beiträge: 11139
Beitrag HumeSikkins Mitglied 18:52:43 29.06.2006   Titel:              Zitieren

camper schrieb:
frage an die moderatoren: besteht eine chance, diesen tread sticky zu machen, oder soller in der versenkung verschwinden?

Imo wird er so oder so in der Versenkung verschwinden. Entweder im wörtlichen Sinne, oder er wird, so wie die FAQs, schlicht ignoriert.

Aber versuchen wir es...


Zitat:
Ich bin dafür, dass noch en bisschen gesammelt/überarbeitet wird und schließlich alles in einem Post zusammengefasst wird.

Ich pinne den Thread jetzt erstmal fest, dass macht das Sammeln leichter. Eine spätere Zusammenfassung scheint mir aber ebenfalls sinnvoll zu sein.

_________________
Remember Sturgeon's Law:
"Ninety percent of everything is crap."
and now go visit my Homepage ;-)
camper
Moderator

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 7015
Beitrag camper Moderator 19:20:28 29.06.2006   Titel:              Zitieren

HumeSikkins schrieb:
camper schrieb:
frage an die moderatoren: besteht eine chance, diesen tread sticky zu machen, oder soller in der versenkung verschwinden?

Imo wird er so oder so in der Versenkung verschwinden. Entweder im wörtlichen Sinne, oder er wird, so wie die FAQs, schlicht ignoriert.
das bestimmt. aber ein sticky ist leichter wiederzufinden, wenn man einen link posten will, weil mal wieder ignoriert wurde :)
ob hier irgendwann ein neuere thread gebraucht wird ist nicht so klar. ein einfaches updaten des originalen beitrags sollte doch genügen. die thematik selbst ist ja auch nicht in sich abgeschlossen.


Zuletzt bearbeitet von camper am 19:22:16 29.06.2006, insgesamt 1-mal bearbeitet
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 20:52:39 29.06.2006   Titel:              Zitieren

Was haltet ihr von der jetzigen Version?

BTW: Zahl-String-Konvertierungen will ich nicht reinnehmen, weil mir das in letzter Zeit nicht aufgefallen ist und der Text jetzt schon groß genug ist.

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
.filmor
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.05.2005
Beiträge: 2365
Beitrag .filmor Mitglied 21:49:17 29.06.2006   Titel:              Zitieren

Mir fehlt immer noch der Hinweis, dass using namespace im Header böse ist. Den "void main" Teil könntest du noch mit dem einfachen "main" erweitern, das kommt auch häufiger vor.

Michael E. schrieb:
Zahl-String-Konvertierungen will ich nicht reinnehmen, weil mir das in letzter Zeit nicht aufgefallen ist und der Text jetzt schon groß genug ist.
Es reicht ein Link auf den FAQ-Beitrag. Das kommt immernoch viel zu häufig vor. Du könntest das unter Punkt 10 setzen, atoi wird auch viel zu häufig verwendet (ist ja afaik nicht mal C).

Bei Punkt 9 fehlt der [b]-Tag am Anfang
Swordfish
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 5639
Beitrag Swordfish Mitglied 22:20:20 29.06.2006   Titel:              Zitieren

@.filmor: doch:

ISO/IEC 9899:TC2 schrieb:
7.20.1.2 The atoi, atol, and atoll functions
Synopsis
1 #include <stdlib.h>
int atoi(const char *nptr);
long int atol(const char *nptr);
long long int atoll(const char *nptr);

Greetz, Swordfish

_________________
To the journey! And to those of us who aren't here to celebrate it with us.
.filmor
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.05.2005
Beiträge: 2365
Beitrag .filmor Mitglied 22:26:49 29.06.2006   Titel:              Zitieren

Dann hab ichs mit itoa verwechselt, sorry. Trotzdem gehört beides nicht in ein C++-Programm.
Swordfish
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 5639
Beitrag Swordfish Mitglied 23:23:34 29.06.2006   Titel:              Zitieren

Tjo

Greetz, Swordfish

_________________
To the journey! And to those of us who aren't here to celebrate it with us.
HumeSikkins
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.08.2000
Beiträge: 11139
Beitrag HumeSikkins Mitglied 10:05:40 30.06.2006   Titel:              Zitieren

.filmor schrieb:
Dann hab ichs mit itoa verwechselt, sorry. Trotzdem gehört beides nicht in ein C++-Programm.

Bitte nicht persönlichen Stil mit generellen Regeln/Empfehlungen verwechseln. atoi hat seine Nachteile (z.B. keine gute Fehlerkontrolle), aber wenn man diese kennt und damit leben kann, sehe ich absolut nichts, was gegen die Verwendung von atoi spricht.

_________________
Remember Sturgeon's Law:
"Ninety percent of everything is crap."
and now go visit my Homepage ;-)
.filmor
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.05.2005
Beiträge: 2365
Beitrag .filmor Mitglied 13:34:48 02.07.2006   Titel:              Zitieren

Gut, es ließe sich sicherlich etwas vorsichtiger formulieren, aber vorher wird darauf hingewiesen, dass man am besten std::string benutzen sollte und für diesen sind Stringstreams angebrachter.
Artchi
Autor

Benutzerprofil
Anmeldungsdatum: 16.03.2002
Beiträge: 9066
Beitrag Artchi Autor 10:24:35 09.07.2006   Titel:              Zitieren

Warum steht in Punkt drei nicht drin, das man bitte das Buch/Tutorial weg schmeissen soll??? Die nächsten Kapitel werden bestimmt auch nicht besser sein.

_________________
http://www.kharchi.eu


Zuletzt bearbeitet von Artchi am 10:25:58 09.07.2006, insgesamt 2-mal bearbeitet
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 16:03:51 09.07.2006   Titel:              Zitieren

Ist das wirklich immer so?

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
ja
Unregistrierter




Beitrag ja Unregistrierter 16:06:26 09.07.2006   Titel:              Zitieren

Solche Bücher lehren wahscheinlich auch dementsprechend schlechten, unmodernen C++ Stil.
Artchi
Autor

Benutzerprofil
Anmeldungsdatum: 16.03.2002
Beiträge: 9066
Beitrag Artchi Autor 18:39:06 09.07.2006   Titel:              Zitieren

Also, wenn das HelloWorld schon nicht ISO-konform ist, warum sollten die nachfolgenden Kapitel über strings, filestreams usw. ISO-konform sein? :confused:

Es ist wahrscheinlich, das das Buch noch vor 1998 geschrieben wurde oder wenn es aktueller ist, der Autor irgendwie die C++-Welt und alles andere verpennt hat. Egal wie, das Buch/Tutorial werden dem C++-Greenhorn der etwas lernen will, nicht groß behilflich sein.

_________________
http://www.kharchi.eu
Lohminio
Mitglied

Benutzerprofil
Anmeldungsdatum: 13.09.2006
Beiträge: 5
Beitrag Lohminio Mitglied 10:21:21 26.10.2006   Titel:   danke            Zitieren

thx für die beantwortung der fragen hat mir auch geholfen
Jacks Rache
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.10.2006
Beiträge: 15
Beitrag Jacks Rache Mitglied 16:41:12 28.10.2006   Titel:              Zitieren

Zitat:

1. Wie kann ich eine richtige Oberfläche programmieren?

Vergiss es. Solange du die Grundlagen nicht kannst (und zu den Grundlagen gehört mehr als schon mal ne Klasse erstellt zu haben!), hat es keinen Sinn, sich mit Oberflächen zu beschäftigen.


Ich finde diese Antwort beleidigend. Ich suche schon seit längerer Zeit ein Tutorial, um eine Benutzeroberfläche zu programmieren - ohne Erfolg. Anstatt Anfängern vorzuschreiben, wie sie C++ lernen sollen, sollte als Antwort besser etwas Konstruktives stehen (z.B. ein guter Link).
Artchi
Autor

Benutzerprofil
Anmeldungsdatum: 16.03.2002
Beiträge: 9066
Beitrag Artchi Autor 17:57:41 28.10.2006   Titel:              Zitieren

Finde die Antwort auch nicht glücklich, es bedürfte wohl einer ausgeweiteten Begründung. Das stimmt.

Zu dem Tutorial: da es keine Standard-GUI in C++ gibt, kann man dir schlecht ebendmal ein Tutorial empfehlen. Wir haben ein GUI-Forum hier, da kannst du dich umschauen in der FAQ und in alten Beiträgen stöbern, dann weißt du wo du Tutorials findest. Und vorallem: dann verstehst du auch die Antwort von da oben. ;) Ansonst ist auch meine Übersicht (siehe meine Signatur) ganz hilfreich?

_________________
http://www.kharchi.eu


Zuletzt bearbeitet von Artchi am 17:59:30 28.10.2006, insgesamt 1-mal bearbeitet
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 18:59:12 28.10.2006   Titel:              Zitieren

Die Antwort ist keineswegs beleidigend gemeint!

Hat jemand Lust, das besser zu formulieren, bevor ich mit meinem C++-Gui-Halbwissen rauskomme?

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
Jacks Rache
Mitglied

Benutzerprofil
Anmeldungsdatum: 28.10.2006
Beiträge: 15
Beitrag Jacks Rache Mitglied 19:28:44 28.10.2006   Titel:              Zitieren

Michael E. schrieb:
Die Antwort ist keineswegs beleidigend gemeint!

Hat jemand Lust, das besser zu formulieren, bevor ich mit meinem C++-Gui-Halbwissen rauskomme?


Wie gesagt: Noch besser als eine andere Formulierung wäre natürlich ein nützlicher Link. Oder steht wirklich nirgends beschrieben, wie man so etwas programmiert? Aber danke schon mal dafür, dass meine Kritik nicht auf taube Ohren gestoßen ist.
LordJaxom
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.11.2005
Beiträge: 5790
Beitrag LordJaxom Mitglied 00:23:14 29.10.2006   Titel:              Zitieren

Jacks Rache schrieb:
Wie gesagt: Noch besser als eine andere Formulierung wäre natürlich ein nützlicher Link. Oder steht wirklich nirgends beschrieben, wie man so etwas programmiert? Aber danke schon mal dafür, dass meine Kritik nicht auf taube Ohren gestoßen ist.


Ein nützlicher Link? Das Problem bei dieser Frage ist IMHO dass es wie gesagt nicht zu Standard-C++ gehört, GUIs zu programmieren. Da gibt es viele verschiedene Frameworks für. Windows? Da gibt es die WinAPI, aber die ist nicht C++. Die MFC, aber die ist nicht modernes C++ und vor allem nicht kostenfrei. WxWidgets, GTKmm, QT und andere. Linux? Embedded? Es kommt immer darauf an was man eigentlich will.

Kurzum: Es gibt viele Wege zum Ziel, aber keiner davon führt an den Grundlagen vorbei. Links gibt es viele, die meisten via Google. In meinen Augen sind die besten Links die Referenzen der o.g. Frameworks, nur dass Referenzen sich am besten lesen wenn man bereits weiss was man tut. Beleidigend ist diese Antwort damit aber auf keinen Fall.
Artchi
Autor

Benutzerprofil
Anmeldungsdatum: 16.03.2002
Beiträge: 9066
Beitrag Artchi Autor 00:26:05 29.10.2006   Titel:              Zitieren

@Jacks Rache! Hast du mein Posting nicht richtig gelesen? Dann würdest du nicht wiederholt nach einem Tutorial-Link nachfragen. LordJaxom hat versucht es zu formulieren, was ich durch verweise auf ein Unterforum versucht habe zu sagen.

_________________
http://www.kharchi.eu
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 11:11:53 29.10.2006   Titel:              Zitieren

LordJaxom: Darf ich das so übernehmen? :D :live:

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
LordJaxom
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.11.2005
Beiträge: 5790
Beitrag LordJaxom Mitglied 00:51:30 30.10.2006   Titel:              Zitieren

@Michael E.: Jederzeit ;)
tipp
Unregistrierter




Beitrag tipp Unregistrierter 19:08:59 09.11.2006   Titel:              Zitieren

Ich fände es gut, wenn in Punkt zwei noch folgende Methode erwähnt würde:

Man kann eine Batch-Datei erstellen, die nachdem Programm die Konsole offen hält.
Einfach eine Batch-Datei im Ordner erstellen wo auch das programm liegt. Das geht unter Windows XP so:

1. Im Explorer (also der ganz normale Datei-Browser) im Menü auf Extras -> Ordneroptionen.
2. Dann auf "Ansicht" und bei "Erweiterte Einstellungen" den Haken bei "Erweiterung bei bekannten Dateitypen ausblenden" entfernen.
3. OK
4. Datei -> Neu -> Textdokument
5. Einen Namen der mit .bat aufhört eingeben wie z.B. "Starter.bat"
6. Rechtsklick auf die bat-Datei und Bearbeiten auswählen.
7. Im Editor folgendes eingeben:
Code:
meinprogramm.exe
pause

Für meinprogramm den Namen eures Programms eingeben.
8. Datei speichern und Editor beenden.
9. Doppelklick auf die bat-Datei und euer Programm bleibt danach offen!

Diese Methode finde ich viel besser da man nicht die IDE wechseln muss und auch keine Änderungen im Code machen muss. Allerdings funktioniert sie nur unter Windows, das haben allerdings die meisten Anfänger.
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 22:15:43 09.11.2006   Titel:              Zitieren

Added.

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
CStoll
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.10.2005
Beiträge: 17912
Beitrag CStoll Mitglied 09:29:21 10.11.2006   Titel:              Zitieren

Zu Punkt 6 könntest du eventuell noch einen Link auf meinen Strings-Artikel einfügen * (und wenn du Tip 3 beachtest, solltest du zumindest <cstring> erwähnen.

Nochmal zu Tip 3: Die "alten" C-Header <stdio.h> etc existieren im C++ Standard übrigens weiterhin - parallel zu den C++ Wrapper-Headern <cstdio> etc.

(*)Die Adresse findest du hinter dem Link da unten ↓

_________________
Wo ich bin, herrscht Chaos. Leider kann ich nicht überall sein.
volkard
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 29842
Beitrag volkard Mitglied 09:52:26 10.11.2006   Titel:              Zitieren

ich las gerade
C++:
fStr.read(reinterpret_cast<char*>(&ulNummer), sizeof(unsigned long)); // C++
// und nicht:
// fStr.read((char*)&ulNummer), sizeof(unsigned long)); // C


warum sollte das so sein?

abgesehen von
C++:
fStr.read((char*)&ulNummer, sizeof(ulNummer));

, denn man will den typ ja auch mal ändern dürfen.

es wäre viel besser, wenn es auch begründungen zu den vorschlägen geben würde. dann kann man sich die tipps besser merken. dann kann man auch besser dran glauben und es ist nicht der tausendste style-guide.

_________________
return [ :><%%> ();//c++-trollfish returning void
Ich empfehle dringend, das Problem zu vertagen, bis es akut wird. Dann liegt mehr Erfahrung vor, was wirklich gebraucht wird.


Zuletzt bearbeitet von volkard am 09:57:56 10.11.2006, insgesamt 3-mal bearbeitet
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 15:42:34 10.11.2006   Titel:              Zitieren

CStoll schrieb:
Zu Punkt 6 könntest du eventuell noch einen Link auf meinen Strings-Artikel einfügen

Done. Danke für den Hinweis.
Zitat:
und wenn du Tip 3 beachtest, solltest du zumindest <cstring> erwähnen.

Was meinst du?
Zitat:
Nochmal zu Tip 3: Die "alten" C-Header <stdio.h> etc existieren im C++ Standard übrigens weiterhin - parallel zu den C++ Wrapper-Headern <cstdio> etc.

Ergänzt.

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
CodeFinder
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.06.2006
Beiträge: 3093
Beitrag CodeFinder Mitglied 15:44:16 10.11.2006   Titel:              Zitieren

volkard schrieb:
man auch besser dran glauben und es ist nicht der tausendste style-guide.
Hast du was gegen (guten) Coding-Style ? Daraus resultiert in der Regel nämlich eine bessere Lesbarkeit des Quellcodes :idea: .

_________________
MfG CodeFinder
CStoll
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.10.2005
Beiträge: 17912
Beitrag CStoll Mitglied 15:47:13 10.11.2006   Titel:              Zitieren

Michael E. schrieb:
Zitat:
und wenn du Tip 3 beachtest, solltest du zumindest <cstring> erwähnen.

Was meinst du?
Auf der einen Seite erklärst du, daß die C-Header (dazu gehört auch <string.h> - die moderne Version ist <cstring>) veraltet sind, auf der anderen Seite verwendest du diesen veralteten Header zur Gegenüberstellung gegen <string>.

_________________
Wo ich bin, herrscht Chaos. Leider kann ich nicht überall sein.
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 11:27:41 11.11.2006   Titel:              Zitieren

CStoll: Geändert.

volkard: Hab dich nicht vergessen, werd heut Abend ne Begründung schreiben.

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
virtuell Realisticer
Mitglied

Benutzerprofil
Anmeldungsdatum: 07.05.2000
Beiträge: 3458
Beitrag virtuell Realisticer Mitglied 12:12:53 13.11.2006   Titel:              Zitieren

CodeFinder schrieb:
volkard schrieb:
man auch besser dran glauben und es ist nicht der tausendste style-guide.
Hast du was gegen (guten) Coding-Style ? Daraus resultiert in der Regel nämlich eine bessere Lesbarkeit des Quellcodes :idea: .


Definiere "guten Coding-Style". IMHO koennte es sich herausstellen, dass es
sich dabei um geschmackssache handelt.

gruss
v R

_________________
virtuell Realisticer, innen gut, aussen besser
volkard
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 29842
Beitrag volkard Mitglied 13:42:44 13.11.2006   Titel:              Zitieren

CodeFinder schrieb:
volkard schrieb:
man auch besser dran glauben und es ist nicht der tausendste style-guide.
Hast du was gegen (guten) Coding-Style ? Daraus resultiert in der Regel nämlich eine bessere Lesbarkeit des Quellcodes :idea: .

was ist "gut"? letztendlich doch etwas, was den code gut macht.
da gibt es aber so viele falsche profeten, daß einem ganz schlecht wird.
deswegen lehne ich jeden style-guide ab, in dem nicht jede regel verständlich begründet wird.
normalerweise isses aber zig-mal besser, den hackern einfach "effektiv c++ programmieren" zu kaufen. einsicht statt unverstandene (und zum großen teil schlechte) regeln brint's.

_________________
return [ :><%%> ();//c++-trollfish returning void
Ich empfehle dringend, das Problem zu vertagen, bis es akut wird. Dann liegt mehr Erfahrung vor, was wirklich gebraucht wird.
THX 1138
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.03.2006
Beiträge: 2327
Beitrag THX 1138 Mitglied 14:24:42 13.11.2006   Titel:              Zitieren

volkard schrieb:
da gibt es aber so viele falsche profeten, daß einem ganz schlecht wird.
Da wird mir schlecht, neue Rechtschreibung hin oder her, Profet sieht einfach grauslig aus. (Sry OT)

MMn sollte man keine C-Style Casts verwenden, nicht nur aus styling Gründen.

_________________
Tretet für die Gerechtigkeit ein, wenn ihr vor Gott Zeugnis ablegt, und sei es gegen euch selber oder euere Eltern und Verwandten. Handele es sich um arm oder reich, Gott steht euch näher als beide.
(Sure an-Nisa, 135)
SideWinder
Moderator

Benutzerprofil
Anmeldungsdatum: 19.10.2001
Beiträge: 19133
Beitrag SideWinder Moderator 14:38:17 13.11.2006   Titel:              Zitieren

Artchi schrieb:
Also, wenn das HelloWorld schon nicht ISO-konform ist, warum sollten die nachfolgenden Kapitel über strings, filestreams usw. ISO-konform sein? :confused:

Es ist wahrscheinlich, das das Buch noch vor 1998 geschrieben wurde oder wenn es aktueller ist, der Autor irgendwie die C++-Welt und alles andere verpennt hat. Egal wie, das Buch/Tutorial werden dem C++-Greenhorn der etwas lernen will, nicht groß behilflich sein.

ISO-konform != gut. Man kann C++ auch sehr gut lehren ohne vollständig ISO-konform zu sein (siehe volkards C++-Kurs)

MfG SideWinder

_________________
http://www.dilbert.com/2009-06-11/
http://www.dilbert.com/2009-06-14/
virtuell Realisticer
Mitglied

Benutzerprofil
Anmeldungsdatum: 07.05.2000
Beiträge: 3458
Beitrag virtuell Realisticer Mitglied 16:25:21 13.11.2006   Titel:              Zitieren

THX 1138 schrieb:
volkard schrieb:
da gibt es aber so viele falsche profeten, daß einem ganz schlecht wird.
Da wird mir schlecht, neue Rechtschreibung hin oder her, Profet sieht einfach grauslig aus. (Sry OT)


Gut das wir es jetzt wissen...

Zitat:

MMn sollte man keine C-Style Casts verwenden, nicht nur aus styling Gründen.


Das ist immer noch keine Begruendung.

gruss
v R

_________________
virtuell Realisticer, innen gut, aussen besser
daktari
Mitglied

Benutzerprofil
Anmeldungsdatum: 21.01.2007
Beiträge: 1
Beitrag daktari Mitglied 14:57:00 21.01.2007   Titel:   Wie kann dieser Code kompakter geschrieben werden?            Zitieren

Hallo liebe Foren Mitglieder,
bei F0 bis F14 handelt es sich um eine int Variable.
Bei LTB handelt es sich um ein Label. Dieses Label befindet sich auf einer anderen Form.
Hat jemand eine Idee, wie dieser Code kompakter mit einer Schleife und einer Laufvariablen für F und LTB geschrieben werden kann?
Vielen Dank für eure Hilfe. :)

Borland C++ Builder 5

int F0, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14;

F0 = StrToInt(Form1->LTB0 ->Caption);
F1 = StrToInt(Form1->LTB1 ->Caption);
F2 = StrToInt(Form1->LTB2 ->Caption);
F3 = StrToInt(Form1->LTB3 ->Caption);
F4 = StrToInt(Form1->LTB4 ->Caption);
F5 = StrToInt(Form1->LTB5 ->Caption);
F6 = StrToInt(Form1->LTB6 ->Caption);
F7 = StrToInt(Form1->LTB7 ->Caption);
F8 = StrToInt(Form1->LTB8 ->Caption);
F9 = StrToInt(Form1->LTB9 ->Caption);
F10 = StrToInt(Form1->LTB10->Caption);
F11 = StrToInt(Form1->LTB11->Caption);
F12 = StrToInt(Form1->LTB12->Caption);
F13 = StrToInt(Form1->LTB13->Caption);
F14 = StrToInt(Form1->LTB14->Caption);
yanke23
Unregistrierter




Beitrag yanke23 Unregistrierter 11:49:29 26.01.2007   Titel:   ich habe mal eine frage            Zitieren

was kann man mit static_cast<int>(x) machen und wie funktioniert das kann mir das villeicht irgendjemand erklären das wäre sau nett

schon mal danke im voraus :)
akari
Moderator

Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11333
Beitrag akari Moderator 11:57:02 26.01.2007   Titel:              Zitieren

Hallo

@ daktari : Siehe die FAQ des Borland Builder Subforums. Dort gibt es einen Abschnitt "Komponenten benutzen", der genau das erklärt.
@ yanke23 : Siehe hier.

bis bald
akari

_________________
In der nächsten Version wird alles besser!
CStoll
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.10.2005
Beiträge: 17912
Beitrag CStoll Mitglied 11:57:54 26.01.2007   Titel:              Zitieren

Kurz: Du kannst einen Wert umwandeln in eine Ganzzahl.

Lang: In C++ gibt es ein ganzes Sortiment von Cast-Operatoren (Typumwandlung):
  • static_cast<T>(x) - explizite Typumwandlung
  • dynamic_cast<T>(x) - Downcasts für polymorphe Typen (Pointer oder Referenzen)
  • const_cast<T>(x) - um die const'nes von Objekten zu entfernen
    (da solltest du besser dreimal nachdenken, bevor du es verwendest)
  • reinterpret_cast<T>(x) - Uminterpretation auf Bit-Ebene
  • (T)x oder T(x) - C-Stil Cast bzw. Funktion-Stil Cast
    (können je nach Situation static_cast, const_cast oder reinterpret_cast darstellen)
Wie genau der Compiler das umsetzt, hängt von den verwendeten Datentypen ab. Aber in der Regel wird er eine passende Typumwandlung suchen, mit der er dein x als int-Wert lesen kann (was das ist, hängt im wesentlichen davon ab, wie x definiert ist).

PS: Bei Fragen darfst du gerne einen eigenen Beitrag eröffnen.

_________________
Wo ich bin, herrscht Chaos. Leider kann ich nicht überall sein.
yanke23
Unregistrierter




Beitrag yanke23 Unregistrierter 12:03:05 26.01.2007   Titel:   noch mal            Zitieren

also ich kann auch eine dezimal zahl in den ascii code umwandeln also das geht aber wie macht der befehl das
CStoll
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.10.2005
Beiträge: 17912
Beitrag CStoll Mitglied 12:08:23 26.01.2007   Titel:   Re: noch mal            Zitieren

yanke23 schrieb:
also ich kann auch eine dezimal zahl in den ascii code umwandeln also das geht aber wie macht der befehl das
char ist auch nur ein Ganzzahltyp, mit dem C++ problemlos rechnen kann. Der Trick dabei ist, daß die Ein-/Ausgabe einen char als ASCII-Zeichen darstellen kann.

_________________
Wo ich bin, herrscht Chaos. Leider kann ich nicht überall sein.
raubritter
Mitglied

Benutzerprofil
Anmeldungsdatum: 31.01.2007
Beiträge: 117
Beitrag raubritter Mitglied 17:28:44 01.02.2007   Titel:              Zitieren

Mal etwas zu dem ersten Punkt gesagt: Ich finde es garnicht so schwer eine richtige Oberfläche zu programmieren. Dies ist mein 3 Tag, in dem ich mich mit C/C++ beschäfftige und ich habe es geschafft eine Oberfläche zu erstellen. Gut, ich weis noch nicht, was z.B.
wcx.cbClsExtra = 0;
heißt. Aber was bringt mir das. Ich kann meine Oberfläche mit meinem Quelltext in größe, aussehen und Beschriftung ändern. Und das reicht mir. Mein Informatiklehrer hat mir einmal gesagt: man muss nicht alles Programmieren können. Man muss nur wissen wo es steht!
Ich finde diesen Spruch wirklich richtig. (bei z.B. Microsoft Words muss man doch auch nicht wissen, wie man einen zeilenvorschub hinbekommt, wenn man das erste mal mit ihm umgeht. Es reicht voll und ganz ein programm aufrufen zu können etwas reinzuschreiben und es zu speichern. Wenn man später etwas braucht kann man es dann natürlich noch suchen! Eine richtige Arbeitserleichterung!
joomoo
Autor

Benutzerprofil
Anmeldungsdatum: 31.07.2004
Beiträge: 1533
Beitrag joomoo Autor 23:27:55 01.02.2007   Titel:              Zitieren

raubritter schrieb:
Mal etwas zu dem ersten Punkt gesagt: Ich finde es garnicht so schwer eine richtige Oberfläche zu programmieren. Dies ist mein 3 Tag, in dem ich mich mit C/C++ beschäfftige und ich habe es geschafft eine Oberfläche zu erstellen. Gut, ich weis noch nicht, was z.B.
wcx.cbClsExtra = 0;
heißt. Aber was bringt mir das. Ich kann meine Oberfläche mit meinem Quelltext in größe, aussehen und Beschriftung ändern. Und das reicht mir. Mein Informatiklehrer hat mir einmal gesagt: man muss nicht alles Programmieren können. Man muss nur wissen wo es steht!
Ich finde diesen Spruch wirklich richtig. (bei z.B. Microsoft Words muss man doch auch nicht wissen, wie man einen zeilenvorschub hinbekommt, wenn man das erste mal mit ihm umgeht. Es reicht voll und ganz ein programm aufrufen zu können etwas reinzuschreiben und es zu speichern. Wenn man später etwas braucht kann man es dann natürlich noch suchen! Eine richtige Arbeitserleichterung!

Vielleicht kannst du eine Oberfläche erstellen, aber es birgt drei Nachteile:
1.) Du benutzt WinAPI. Das ist C und plattformabhängig.
2.) Früher oder später werden deine Programme einfach so abstürzen. Und du wirst nicht wissen warum, glaub mir.
3.) Wir sollen dir dann dabei helfen :D

mfg.
JayB
Unregistrierter




Beitrag JayB Unregistrierter 16:43:31 20.02.2007   Titel:   Objektinspektor            Zitieren

hat jemand so ne art erklärung des objektinspektors...?
also wo kurz aufgeführt ist was bei welcher einstellung passiert
LordJaxom
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.11.2005
Beiträge: 5790
Beitrag LordJaxom Mitglied 17:05:42 20.02.2007   Titel:              Zitieren

1. Was ist "der Objektinspektor"?
2. Wieso ist das eine meistgestellte Frage?
Braunstein
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.05.2002
Beiträge: 7074
Beitrag Braunstein Mitglied 17:09:05 20.02.2007   Titel:              Zitieren

1. Ich kenn sowas beim BCB (würde dann ins BCB-Forum gehören)
2. Das ist keine solche :)
Vielleicht könnte ein Mod diese Frage mal abtrennen.
akari
Moderator

Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11333
Beitrag akari Moderator 17:10:25 20.02.2007   Titel:              Zitieren

Hallo

Objektinspektor ist ein Teil des Borland Builders, und damit hat die Frage hier nichts zu suchen. Das gehört ins Builder-Forum.

Die Eigenschaften die dort angezeigt werden sind kontextabhängig, und zwar vom ausgewähltem Komponententyp. Und eine detaillierte Dokumentation der Komponententypen findest du in der Builder-Hilfe : F1 drücken.

bis bald
akari

_________________
In der nächsten Version wird alles besser!
camper
Moderator

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 7015
Beitrag camper Moderator 10:03:06 11.04.2007   Titel:              Zitieren

Vorschlag für einen weiteren Eintrag: zum Unterschied zwischen Klassentemplate und Templateklasse bzw. Funktionstemplate und Templatefunktion.
Michael E.
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.10.2003
Beiträge: 5774
Beitrag Michael E. Mitglied 10:15:40 11.04.2007   Titel:              Zitieren

Meinst du, das wird häufig benötigt? Wenn ja, dann kann ich ja mal den entsprechenden Abschnitt aus "C++ Templates" zu Hause zusammenfassen.

_________________
Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords. Please type a different password. Type a password that meets these requirements in both text boxes. (http://support.microsoft.com/kb/276304/en-us/)
valaBoo
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.08.2007
Beiträge: 2
Beitrag valaBoo Mitglied 15:55:48 12.08.2007   Titel:              Zitieren

akari schrieb:
Hallo

Objektinspektor ist ein Teil des Borland Builders, und damit hat die Frage hier nichts zu suchen. Das gehört ins Builder-Forum.

Die Eigenschaften die dort angezeigt werden sind kontextabhängig, und zwar vom ausgewähltem Komponententyp. Und eine detaillierte Dokumentation der Komponententypen findest du in der Builder-Hilfe : F1 drücken.

bis bald
akari


Ah super danke, genau das wollte ich auch wissen. :)
:live:Außerdem echt super Forum! ;) also hilfreich.

Wenn jemand will, kann er auch diesen: Link anklicken, damit tut ihr mir einen großen Gefallen, und lernt evtll. noch ein super Browsergame kennen. ;)
(Nur so nebenbei, also wer drauf klicken will dann klickne ;) )

Ich werd noch weiterhin hier durchstöbern, da hier wirklich gute Sachen zu finden sind!

MfG
valaBoo


Zuletzt bearbeitet von CStoll am 08:47:44 13.08.2007, insgesamt 2-mal bearbeitet
The-Kenny
Mitglied

Benutzerprofil
Anmeldungsdatum: 03.03.2007
Beiträge: 873
Beitrag The-Kenny Mitglied 16:03:49 12.08.2007   Titel:              Zitieren

Kann ein Mod bitte den Link dort zensieren? :rolleyes: :mad:

_________________
Netwars - Fork it

Follow me on Twitter
CStoll
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.10.2005
Beiträge: 17912
Beitrag CStoll Mitglied 08:48:18 13.08.2007   Titel:              Zitieren

The-Kenny schrieb:
Kann ein Mod bitte den Link dort zensieren? :rolleyes: :mad:
Wenn du so freundlich bittest, aber immer doch ;)

_________________
Wo ich bin, herrscht Chaos. Leider kann ich nicht überall sein.
asdasdasd
Unregistrierter




Beitrag asdasdasd Unregistrierter 18:19:22 29.05.2008   Titel:              Zitieren

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int cgls ( Sparse_Matrix &A , const Vektor &b , Vektor &x0 , int k_max , double &eps )
{
    if(A.Zeilen() < A.Spalten())
    {
        cerr << "Ungültige Matrix für cgls, Zeilen < Spalten" << endl;
        return 0;
    }
    Vektor r(b - A*x);
    Vektor s(r*A);
    Vektor d(s);
    double alpha, beta, norm_s;
    int k = 0;
    while(++k < k_max && s.Norm2() < eps)
    {
        alpha =  s.Norm2()*s.Norm2()/((A*d).Norm2()*(A*d).Norm2());
        x0 += alpha * d;
        r -= alpha * (A*d);
        norm_s = s.Norm2();
        s = r*A;
        beta = s.Norm2()*s.Norm2()/(norm_s*norm_s)
        d  = s + beta*d;
    }
    eps = s.Norm2();
    return k;
}


// Edit: Code tags hinzugefügt


Zuletzt bearbeitet von evilissimo am 16:32:48 27.09.2008, insgesamt 1-mal bearbeitet
Tobi3000
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.07.2006
Beiträge: 209
Beitrag Tobi3000 Mitglied 15:28:18 27.09.2008   Titel:              Zitieren

Warum werden bei manchen Funktionsaufrufen '::' benutzt und an anderen stellen benutzt man '.' oder '->'?
Swordfish
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 5639
Beitrag Swordfish Mitglied 16:23:03 27.09.2008   Titel:              Zitieren

Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.

Bei statischen Methoden musst Du nur den Scope angeben:

C++:
1
2
3
4
5
6
7
8
9
10
class foo_t {
 
    public:
        static void bar( ) { };
};
 
int main( ) {
 
    foo_t::bar( );
}

für andere benötigst du ein Objekt:


C++:
1
2
3
4
5
6
7
8
9
10
11
12
class foo_t {
 
    public:
        void bar( ) { };
};
 
int main( ) {
 
    foo_t a_foo;
 
    a_foo.bar( );
}

cheers, Swordfish

_________________
To the journey! And to those of us who aren't here to celebrate it with us.
camper
Moderator

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 7015
Beitrag camper Moderator 14:21:53 29.09.2008   Titel:              Zitieren

Swordfish schrieb:
Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.
Das solltest du besser zurücknehmen. Der Begriff "Methode" hat in C++ keine formale Bedeutung, dort gibt es nur Funktionen. Welche Arten davon (hier: Memberfunktionen) jeweils als Methode bezeichnet werden, ist kontextabhängig.
asc
Mitglied

Benutzerprofil
Anmeldungsdatum: 13.01.2007
Beiträge: 6641
Beitrag asc Mitglied 14:56:24 29.09.2008   Titel:              Zitieren

camper schrieb:
Swordfish schrieb:
Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.
Das solltest du besser zurücknehmen. Der Begriff "Methode" hat in C++ keine formale Bedeutung, dort gibt es nur Funktionen. Welche Arten davon (hier: Memberfunktionen) jeweils als Methode bezeichnet werden, ist kontextabhängig.


Auch wenn du recht hast das es keine standisierte Bedeutung hat, ist diese Verwendung von Funktion/Methode doch sehr verbreitet. Also als falsch würde ich die Aussage von Swordfish auch nicht hinstellen, auch wenn es nicht überall so verwendet wird (Wobei ich es aus den bisherigen Firmen auch nur in dieser Art kenne, und es auch in OO-Büchern eine recht verbreitete Bezeichnung ist [gehe hier mal von ca. 80%+ aus]).

cu André

_________________
in theory there's no difference between theory and practice. in practice there is. (yogi berra)

In der Theorie gibt es kein Unterschied zwischen Theorie und Praxis. In der Praxis sehr wohl.
camper
Moderator

Benutzerprofil
Anmeldungsdatum: 06.08.2004
Beiträge: 7015
Beitrag camper Moderator 18:50:06 29.09.2008   Titel:              Zitieren

asc schrieb:
camper schrieb:
Swordfish schrieb:
Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.
Das solltest du besser zurücknehmen. Der Begriff "Methode" hat in C++ keine formale Bedeutung, dort gibt es nur Funktionen. Welche Arten davon (hier: Memberfunktionen) jeweils als Methode bezeichnet werden, ist kontextabhängig.


Auch wenn du recht hast das es keine standisierte Bedeutung hat, ist diese Verwendung von Funktion/Methode doch sehr verbreitet. Also als falsch würde ich die Aussage von Swordfish auch nicht hinstellen, auch wenn es nicht überall so verwendet wird (Wobei ich es aus den bisherigen Firmen auch nur in dieser Art kenne, und es auch in OO-Büchern eine recht verbreitete Bezeichnung ist [gehe hier mal von ca. 80%+ aus]).

cu André
Die Wahrheit oder Unwahrheit einer Behauptung ist nicht davon abhängig, wieviele Personen diese verbreiten (dass ich das überhaupt sagen muss, betrachte ich als Zumutung). In C++ ist jeder Methodenaufruf (egal, welche übliche Verwendung wir nutzen) ein Funktionsaufruf, weil jede Methode eine Funktion ist. Mithin ist Swordfishs Aussage falsch, ohne wenn und aber. Es spielt auch keine Rolle, wie verständlich es ist, das dieser Fehler gemacht wurde - das kann schon gar kein Kriterium sein in einem Thread wie diesem, der immer wieder gelesen werden wird.
Swordfish
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.03.2005
Beiträge: 5639
Beitrag Swordfish Mitglied 18:26:52 30.09.2008   Titel:              Zitieren

Sorry. Ich meinte den aus der OOP - als Konzept - bekannten Begriff der Methode ... nicht wirklich passend auf die gestellte Frage hin. :o)

Natürlich ist es - auf C++ bezogen - eine Memberfunktion.

cheers, Swordfish

_________________
To the journey! And to those of us who aren't here to celebrate it with us.


Zuletzt bearbeitet von Swordfish am 18:28:16 30.09.2008, insgesamt 1-mal bearbeitet
C++ Forum :: C++ (alle ISO-Standards) ::  Die meistgestellten Fragen   Thema geschlossen

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.