Beiträge von jjan

    Zitat von seg2

    Wie kann man mit Mathematica Differenzengleichungen lösen?

    rsolve.

    [The message you have entered is too short. Please lengthen your message to at least 10 characters.]

    Zitat von Lord Binary


    i->blabla() ist deshalb problematisch, weil Iteratoren abstrakte Pointer sind, und nur die Operatoren *, ==, =!, ++,--,+=,-=, +,-, <,>,<=,>= darauf definiert sind (machmal auch weniger, je nach Iterator Klasse)
    Aber NICHT ->

    Da Iteratoren aber meist intern als Pointer repäsentiert sind, kompiliert das Zeug, gibt aber meistens nicht das gewünschte Ergebnis.
    Hängt stark von der konkreten STL Implementation an.

    Gschichtl.

    Ich zitiere den ISO/IEC Standard 14882, Kapitel 24.1, Absatz 1:
    <<All iterators i support the expression *i, resulting in a value of some class, enumeration, or builtin type T, called the value type of the iterator. All iterators i for which the expression (*i).m is well-defined, support the expression i->m with the same semantics as (*i).m.>>

    Falls also du also wirklich einmal einen Unterschied zwischen (*i).m und i->m bemerkt hast, war entweder schon (*i).m nicht wohldefiniert, oder deine Library hatte einen Defekt.

    Sogar Autoren von Style-Bibeln wie Scott Meyers verwenden die Syntax i->m.

    Verwende std::remove_if. Das "verschiebt" die zum Tode verdammten Elemente ans Ende der Liste und liefert dir einen Iterator aufs Ende der Liste aus gewünschten Elementen.

    Danach kannst du mit erase() die unerwünschten Elemente am Ende der Liste löschen.

    Zitat von Kongo

    Funktionspointer gibts schon. Aber ich glaub nicht innerhalb von Klassen.

    Doch, und zwar gibt es zweierlei Varianten:
    a) Zeiger auf statische Member-Funktionen
    Die verhalten sich so ziemlich identisch zu den Funktionszeigern in C.
    b) Zeiger auf nicht-statische Member-Funktionen
    Dazu gleich mehr.

    Zitat


    Das kann ja nicht gehen, da es den Code für die Klassen eigentlich nur einmal irgendwo im Speicher gibt. Du müsstest wiederum das Objekt übergeben und über das kannst du dann auf die Funktion zugreifen.

    Du sagst es geht nicht, bringst dann aber einen Vorschlag, wie es doch geht. Und genau so ist es auch im Standard vorgesehen :)

    Logischerweise brauchst Du natürlich dann für den Aufruf eines Zeigers auf eine nicht-statische Member-Funktion eine Instanz eines Objekts der entsprechenden Klasse, für die die Funktion dann ausgeführt wird.

    Hi,

    Vielleicht hilft dir folgendes Beispiel weiter:

    Prinzipiell gilt: Wenn du einen Pointer auf eine nicht-statische Member-Funktion hast, dann brauchst du auch eine Instanz eines Objekts der entsprechenden Klasse, auf der du die Funktion dann anwenden kannst.

    Alternativ dazu kannst du einen Pointer auf eine statische Funktion verwenden (wenn deine Funktion keinen Zugriff auf Instanz-Variablen benötigt).

    Zitat von shabby

    Function Management Header,
    Foederatio Medicorum Helveticorum oder
    Fahrrad mit Hilfsmotor ?
    Ich tipp mal auf letzeres



    Bei der Kommunikation mit Informatikern sind gelegentlich die Jargon-Files von ESR hilfreich ...

    http://catb.org/~esr/jargon/

    Ein Fahrrad mit Hilfsmotor hab ich leider noch nie besessen/bedient, außer ein VW Polo fällt in diese Kategorie.

    Zitat von Boromir

    Blede Frage, aber was ist OCR Soft.?
    Vielleicht denkst du jetzt, jemand der das Kürzel nicht versteh hat sowieso keine Ahnung davon, aber dem muss nicht so sein..



    Eben, ich wusste bis vor kurzem auch noch nicht, was FMH bedeutet, hab dann aber festgestellt, dass ich ein Spezialist darin bin ... ;))

    Zitat von subatomic

    Ich hab das jetzt so probiert:
    #include <strstrea.h>



    Hi, der richtige Header heißt
    <sstream>

    also

    #include <sstream>

    Je nach Version von Visual C++ kann es aber sein, dass es diesen Header noch gar nicht gibt ... der C++ Support von Visual C++ ist leider b0rken (sprich: es wird nur ein Subset des Standards implementiert). Ab der Version 7.0 ist's (angeblich) ein wenig besser.

    Zitat von hal

    Wer so Funktionen wie sprintf oder gets verwendet gehört geschlagen, gevierteilt, kielgeholt und am POSIX-Baum aufgeknüpft (ersterer Fall kann entschärft werden, wenn man die Eingabe vorher kontrolliert).



    sprintf mit gets in einen Topf zu werfen, halte ich für übertrieben. gets kann nämlich nur dafür verwendet werden, um User Input zu erhalten.

    sprintf kannst Du aber auch sinnvoll verwenden, ohne User Input zu verarbeiten, und in solchen Fällen ist es ausreichend sicher - nämlich wenn Du bereits im Vorhinein sicher weißt, wieviel Platz Du maximal in Deinem Buffer benötigst.

    Zitat


    Ah ja, und du kannst dir auch deine eigene Konvertierungsroutine basteln, ist leichter als es vielleicht klingt.



    Das brauchst mir ned sagen ;)

    Zitat von RoadRash

    in C: itoa() bzw. ftoa()
    ;)


    MÖÖÖÖPP

    Achtung! itoa() ist keine Funktion, die zum ANSI C Standard gehört. Das bedeutet unter anderem, dass unter den meisten Unices keine Implementierung von itoa() zur Verfügung steht.

    Wenn Du in C portabel einen Integer in einen String umwandeln willst, musst du dafür zB - wie schon von hal vorgeschlagen - sprintf bzw snprintf (C99, dafür sicherer) verwenden.

    In C++ kann die Umwandlung auch mittels eines stringstreams erfolgen:

    int a = 666;
    std::stringstream strstream;
    strstream << a;
    std::string str = strstream.str();

    Mittels dieser Methode kannst Du Dir auch ganz C++-like ein stream_cast<> Template stricken.

    Hi,

    Also wenn wir vom gleichen Xerces Sax Parser sprechen, dann gibt's in der Parser Klasse folgende Methode:

    public void parse(InputSource source)
    throws SAXException,
    java.io.IOException

    InputSource hat wiederum folgenden Konstruktor:

    InputSource(java.io.InputStream byteStream)

    Na ja, jetzt musst du nur noch aus Deinem String einen ByteArrayInputStream machen:

    String myxml = "<xmltest>hallo baum</xmltest>";
    ByteArrayInputStream stream = new ByteArrayInputStream(myxml.getBytes());

    parser.parse(new InputSource(stream));

    So sollte das funktionieren.

    HTH.

    Zitat von subatomic

    Wie wird man den =-Operator auf Klassen los? Irgendwie passt dessen Verwendung nicht ganz in das Konzept der OOP. Welchen Sinn macht es denn, wenn ich den Zugriff auf ein Objekt nur über öffentliche Methoden gestatte, es dann aber möglich ist alle Elementvariablen mit
    instanz2 = instanz1
    zu verändern.



    Normalerweise wird das so gelöst, dass operator=() private deklariert wird.

    Das hat mich meine Freundin (die ebenfalls in einem Jugendzentrum arbeitet) auch schon gefragt. Daraufhin hab ich sie über die Gefahren der Zensur aufgeklärt, und ihr erklärt, dass Pornos dem Menschen nicht schaden.

    Damit war das Problem gelöst ;)