Hej. Jeg er ved at lave en slags socket framework eller noget i den stil til privat brug. Jeg har derfor konstrukeret en klasse ved navn virtualWrite som har en operator<<() så man kan bruge den. Det operator<<() skal gøre er at man kan give den en eller flere strenge, og dem kan man så, via <<, skrive til socketen, men hvordan implementere jeg det? Jeg har kun leget med operator==(). Når der gøres brug af operator<<() skal den jo gå ind og bruge send() funktionen, som er defineret sådan her
int send(int sockfd, const void *msg, int len, int flags);
Det kommer an på hvordan du vil kunne bruge din << operator.
Hvis den skal kunne bruges på samme måde som med f.ex. cout, så du kan skrive: socket << "Hello: " << std::hex << SomeInt << endl; Bliver din klasse nødt til at arve fra en stream class, hvor du så overloader de funktioiner der sender output, når stream'en flush'es eller der kommer et linie skift. Denne metode er ret bøvlet.
Du kan også lave en lettere metode, hvor du laver en << operator for hver type(/gruppe) object der skal kunne stream'es. Dette er noget lettere, men er knap så fleksibelt.
I sidste tilfælde vil jeg mene at du skal lave: SocketStream& operator operator << (SocketStream& s, const std::string& str);
Det vil sige at jeg faktisk godt kan arve fra stream klassen, og overloade de funktioner jeg nu skal for at få det hele til at glide? Det ville da være det mest fleksible, som du også siger Bertel, for det er jo netop det jeg vil lave, så socket objektet opfører sig som en cout.
Aaaah, så det bliver samlet i en tilsidst og derefter returneret?! Hmm, jeg ved hvad en stream er, men findes der et eller andet sted, noget der fortæller noget grundlæggende om streams. Ikke hvordan man bruger det, men mere hvordan de opføre sig, er defineret osv?
Aah, ok. Nu når jeg tænker over det mener jeg faktisk at jeg har læst om det engang. Altså jeg har fundet et class lib, som jeg kigger lidt på og henter lidt inspiration fra, men jeg må sige at koden, i mit hoved, er lidt uoverskuelig.
bertel, grunden til at jeg spørger, er at jeg nemlig har fundet nogle uoficelle libs som bliver kaldt det :) Kunne jo være at du ville have mig til at bruge dem, for at gøre det lidt lettere.
Ja det er lidt sjovere at få alle fejlene selv :D Lærer man mere af. Ej men jeg vil bygge et slags framework som er opbygget som noget af Java frameworket med virtuelle og abstrakte klasser. Det jeg ikke lige har så meget styr over er C++'s stream bibliotek, og hvordan den gemmer de forskellige data'er.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.