Beiträge von jjan
-
-
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 wolk
wie siehts mit interbase aus ?? hab gehört die ist komplett frei ??
Borland Interbase ist seit einer Weile unter einer offenen Lizenz verfügbar und heißt nun Firebird:
http://firebird.sourceforge.net/ -
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:
Code
Alles anzeigen#include <iostream> class B; typedef int (B::*funptr) (int); class A { private: funptr ptr; public: void addFunction(funptr p) {ptr=p;} void callFunction(B* obj, int a) {std::cout << (*obj.*ptr)(a) << std::endl;} }; class B { public: int calcSquare(int a) {return a*a;} void run() { A* obj = new A; obj->addFunction(&B::calcSquare); obj->callFunction(this, 5); } }; int main() { B* obj = new B; obj->run(); }
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 buschti
trivial für einen alten hasen, aber nicht für einen java-anfänger. und ich glaube nicht, daß dieses forum nur für profis gedacht ist.
das wollt ich nur mal loswerden....
Eine Google-Suche nach "java zwei strings miteinander vergleichen" liefert als First Hit:
http://www.galileocomputing.de/openbook/javai…undStringBuffer
Das wollt ich nur mal loswerden ... -
Dia ist in der Tat sehr nett ...
Ein Programm aus der KDE Welt, das ebenfalls sehr empfehlenswert ist, ist Kivio:
http://www.thekompany.com/projects/kivio/ -
Zitat von AndreaKall
Hallo Leute,
Bräuchte eine FTP Client Funktion in einem Java-Programm (möchte Daten via FTP auf einen Server legen).
Hi,
http://www.enterprisedt.com/downloads/ftp.html
Die edtFTP Java Client Library funktioniert hier einwandfrei und steht unter LGPL Lizenz - ist also selbst für kommerziellen Gebrauch gratis und als Bonus gibts den Source Code zur Library.
HTH
-
Hi,
Bewährte portable Bibliotheken, die dieses Problem lösen, kenne ich leider auch nicht ... die MFC stellen AFAIK diese Funktionalität zur Verfügung, aber damit bist du natürlich auf Wintel beschränkt.
Allerdings gibt es einen Eintrag im comp.lang.c++ FAQ, der genau dieses Thema behandelt, ist recht interessant zu lesen:
http://www.parashift.com/c++-faq-lite/serialization.html -
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ÖÖÖÖPPAchtung! 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 -
-
Zitat von mars
Sag nichts Negatives über den fvwm2!
Eben, FEFE benutzt nämlich FVWM. Sein Theme gibts übrigens unter
http://www.fefe.de/fvwm.tar.gz .