Beiträge von Soulmerge

    Zitat von Swoncen

    den Default Konstruktor gibts meines Wissens immer, wenn du keinen Konstruktor ohne Parameter schreibst.


    Der Kopierkonstruktor existiert auch, wenn man ihn nicht definiert, der default-Konstruktor wird aber nur vom Compiler hinzugefügt, sofern kein anderer nicht-kopier-Konstruktor deklariert wurde.

    Hat mehrere Gründe:
    1. haben die PEAR-Pakete Teilweise fürchterlich bis grauenvolle Quelltexte/Architekturen und/oder Dokumentation/Tutorials. Schon mal versucht nachzuvollziehen, wie PHPDoc funktioniert? Oder versucht irgendeine der PEAR-Klassen zu erweitern? Es sind nicht alle so, aber einfach zu viele an zu wichtigen Stellen.
    2. sind die meisten PEAR Pakete unsauber geschrieben und leben von der Großzügigkeit des php Interpreters (wie auch viele PHP Skripte selbst, eigentlich). Das ist nicht gerade das, was ich von einer Library erwarte. Ein einfaches Beispiel: versuch es mal mit folgender Zeile in einem Quelltext, der PEAR benutzt: error_reporting(E_ALL|E_STRICT);
    3. versuchen die PHPTools für jedes Problem *eine* Lösung zu bieten, die dann besonders gut gepflegt wird, als mehrere, die große Unterschiede in Qualitat aufweisen.
    4. hält PEAR noch an PHP4 fest. Da aber PHP5 schon seit fast 2 Jahren am Markt ist, betrachte ich Version 4 als deprecated. Dadurch, dass es auch in der PHP4-Zeit seine Ursprünge hat und das Basisdesign deshalb aus nicht-OO Zeiten geblieben sind, ist es auch schlichtwegs veraltet.

    Das ist so im Groben das, was ich über PEAR denke. Ich kann mir vorstellen, dass es sehr viele gibt, die es toll finden, aber mich spricht es einfach nicht an :zzz:

    Das ist ja fürchterlich. Ich verstehe immer mehr, wieso PHP bei vielen Leuten so unbeliebt ist. Hier ein schnellerer Algorithmus mit ein wenig Struktur und Lesbarkeit ;)


    /edit: Ich sehe gerade, dass ich mdk's Vorschlag implementiert habe :)

    Ich würde nicht sagen, dass es in ASP irgendetwas gibt, was man mit PHP noch nicht machen kann. Das Problem mit PHP ist es aber, diese Funktionalitäten irgendwo brauchbar implementiert zu finden, da es ja mehr von Freizeitprogrammierern verwendet wird, als von professionellen Hackern. Wenn man also 5 verschiedene Libraries verwendet, muss man sich mit 5 verschiedenen APIs auseinandersetzen. Bei ASP haben die Schnittstellen hingegen wahrscheinlich eine Richtlinie, der sie Folgen. Ich meide ASP (allgemein eigentlich: Microsoft Produkte) dennoch wie die Pest, arbeite ja auch schon seit 6 Jahren mit PHP und habe einige Libraries, die ich in- und auswendig kenne. Ich traue auch den Autoren nicht, die über ASP schreiben, ohne irgendwelche Schwächen zu erwähnen :eek2:, und bis jetzt habe ich noch keinen gefunden, der sich für ASP ausspricht, aber seine Makel nicht verschweigt.

    Es gibt übrigens auch IDEs für PHP:
    Zend Studio: http://www.zend.com/store/products/zend-studio/index.php
    PHPEd: http://www.nusphere.com/products/index.htm
    PHPEclipse: http://phpeclipse.de/
    Die ersten zwei kosten was, das letzte ist ein Plugin für Eclipse

    OK, vielen dank, der letzte Post war es, den ich gebraucht habe. Ich werde es mal damit probieren, und versuchen, mir klarzumachen, dass ich die cpp's nicht inkludieren muss...
    Vielen Dank für die zahlreichen Antworten...
    lG, Soulmerge

    Übrigens: in Borland IDE kann man genauso gut alle Dateien zu einem Projekt inkludieren und ohne linker-Fehler kompilieren, daher mein Unverständnis zur VC++ Interpretation

    Einen Augenblick, bitte, das ist ein Programm, das *ich* geschrieben habe. Das ist einfach mein Programmierstil, und es lässt sich in *meinem* Visual C++ *nicht* kompilieren!!!! Also sagt mir nicht ständig, ich hätte ein Problem mit #includes, stattdessen wäre ein "Wahrscheinlich ist dein VC++ anders geconft" hilfreicher gewesen.

    Zitat

    Ein .h File darf NIE ein .cpp File inkludieren.


    Wie gesagt: ich habe bis jetzt immer nur mit dem Borland command-line Compiler gearbeitet, und der schmeißt einen Fehler (hat er zumindest in früheren Versionen, beim neuen habe ich das nicht getestet), falls ich z.B. a.cpp nicht in a.h inkludiere und a.h aus einer anderen Datei inkludiert wird (Da ja die Implementierungen der Deklarationen fehlen, die in a.h stattfinden) -> Der compiler inkludiert keine Dateien in das Projekt, die nicht explizit in irgendeiner Datei inkludiert werden. Ich schätze mal in VC++ ist das anders. (Kann ich zumindest aus den bisherigen Antworten heraussieben.

    Hier noch die Meinung von *meinem* VC++ zu dem kleinen Programm, dass ich geschrieben habe:

    OK, ich habe hier mal ein kleines Test-Projekt geschrieben, dass sich mit VC++ _nicht_ übersetzen lässt. Könnte mir irgendjemand erklären, wieso? Mit den Borland-Tools funktioniert das einwandfrei, ich weiß wirklich nicht, woran das liegen könnte....

    Nein, das ist es ja, was ich am VC++ nicht verstehe: Beim Kompilieren gibt er überhaupt keine Fehler, nur beim Linken beschwert er sich, Definitionen von Klassenfunktionen wären mehrfach vorhanden (Die Definition einer Funktion f von A in B.obj, also: A::f already defined in B.obj ). Das Problem ist zwar nicht mehr so dringend, würde mich aber trtzdem interessieren, wie der auf so etwas kommt???

    Danke für die Tipps. Nur noch einige Bemerkungen dazu:

    Ich programmiere schon seit längerer Zeit kleinere Sachen mit dem kleinen Borland-Compiler, bis jetzt gab es für mich keinen Anlass auf eine Entwicklungsumgebung umzusteigen. Der Borland-Compiler hat anscheinend andere Konventionen als der von Microsoft. Der Code sollte theoretisch sauber sein (Alle Dateien enthalten #ifndef/#define/#endif, Deklarationen finden Ausschließlich in den Header-Dateien (Erweiterung '.h') und Implementierungen nur in .cpp-Dateien statt. Es wird keine Variable/Klasse/Enumeration mehr als einmal Deklariert/Implementiert und jede Klasse hat ihre eigenen Header/cpp -Dateien) Mittlerweile umfasst mein Projekt ca. 30 Dateien und ich arbeite immer noch mit der Borland-Entwicklungsumgebung und dem Command-Line-Compiler, da der Builder doch etwas zu lahm ist, wenn man nicht gerade am GUI-Teil herumbastelt.

    Nur: Wenn ich das Projekt in den Visual C++ Compiler gebe, entsteht eben der oben genannte Fehler. Ein Grund könnte sein, dass ich am Ende meiner Header-Dateien die cpp-Dateien inkludiere, damit es wurscht ist, ob man von einer Anderen Stelle aus nun die Header-, oder die cpp-Datei inkludiert. (Obwohl ich selber nur die .h-Dateien inkludiere)

    Ich sagte schon, ich habe das Problem sehr schlecht dargestellt, aber danke nochmal für die Sorge um meinen Programmierstil =)

    Vielen Dank für eure Hilfe, habe das ganze schlussendlich in den c++ Builder von Borland gegeben und alles hat einwandfrei funktioniert. Ich habe mich anscheinend schon zu stark an die Borland FreeCommandLineTools gewöhnt, weiß nicht einmal, was verkehrt gewesen sein könnte. (Das mit Deklarationen und Implementierungen hatte ich in den richtigen Dateiendungen, habe anscheinend das Problem schon wieder zu stark abstrahiert)

    lG, Soulmerge

    Vielen Dank für die rasche Antwort, aber ich glaube, ich habe das Problem etwas zu stark verallgemeinert. :)
    Das Problem wäre mit dem Integer anscheinend kein Problem, nur was mache ich, wenn mehrere Klassen habe, die sich gegenseitig inkludieren? Beispiel:

    class A // in der Datei A.cpp
    class AA : public A // inkludiert A.cpp
    class AB : public A // inkludiert ebenfalls A.cpp

    Wenn ich jetzt ein Programm schreibe, für das ich AA und AB inkludieren muss, so wirft mir der Linker einen Fehler entgegen, A wäre schon in AA definiert worden, und dürfte in AB.obj nicht noch einmal definiert werden.

    Hoffe, das schildert die Situation etwas besser...

    Ich habe ein kleines, mit dem gratis-Compiler von Borland zusammengestelltes Projekt, das ich gerne ins Microsoft Visual C++ übertragen möchte. Die Dateien lassen sich ohne Probleme kompilieren, doch begreift der Microsoftsche Linker die Situation nicht ganz. Ich bekomme immer Fehlermeldungen Folgender Art:

    Zitat


    test2.obj : error LNK2005: "int i" (?i@@3HA) already defined in test1.obj

    Die beiden Dateien, die hierfür kompiliert wurden:

    Weiß irgendjemand, was man da machen kann?

    thx


    Bitte sehr:

    String in = "";
    while( (in+=(EprogIO.readWord())).charAt( in.length()-1 ) != '\n' );

    Hoffe das hilft weiter ;)