Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.
Jonas.N

Jonas.N

Medlem
  • Plats Lund
  • Registrerad 2002-10-21
  • Senast aktiv 2006-09-04
  • Antal inlägg 26

Foruminlägg

De senaste inläggen Jonas.N har skrivit i forumet.

Fungerar tyvärr inte. Jag får dock ett annat felmeddelande:

SoundAlarm.cpp:24: error: invalid conversion from 'void*' to 'void* (*)(void*)
SoundAlarm.cpp:24: error: initializing argument 3 of 'int pthread_create(_opaque_pthread_t**, const pthread_attr_t*, void* (*)(void*), void*)'

Något annat förslag??

Hej igen alla C++ programmerare, nu har det tyvärr gått så långt att jag behöver lite hjälp. Titta på den här koden:

class SoundAlarm : private DOutput {
public:
      .
      .
private:
      .
      void *loop();
      pthread_t loop_t;
};

SoundAlarm::SoundAlarm(...) : DOutput(...)
{
	.
        .
	pthread_create(&loop_t, NULL,(void*) &loop, this);
}

Med gcc 3.3 så kunde man enkelt skapa trådar på ovan nämnda sätt. Man fick visserligen en varning men det var ju inte så farligt så länge som det fungerade. Gcc 4.0 har däremot blivit mycket striktare och tillåter inte alls den koden. Jag har experimenterat runt en del men än så länge så har inget hjälpt. Så hur ska man då skapa en tråd av en medlemsfunktion på rätt sätt?

Jonas

Verkar intressant...
Trodde faktiskt inte att jag skulle få något svar. Ska ta och titta på det.

Tack så mycket!!

Här har jag en lite svår fråga (tror jag). Jag har en dator som jag bara kan komma åt via ssh. På den här datorn kör jag ett x11 program vars fönster jag exporterar till min lokala dator. Problemet jag har är att detta program behöver ofta vara igång länga, så pass länga att jag inte kan ha min lokala maskin igång under hela tiden. I vanliga fall så kan man lösa detta med hjälp av "nohup" och/eller "screen" men inte när man arbetar med x11.
När jag stänger ner X11.app på min mac så avslutas också de program som visade något på min dator genom X11.app, vare sig man använder nohup eller screen. Detta beror ju på att x11 använder en egen uppkoppling för att exportera fönster (jag tror att det sker via port 6000 för övrigt) och när den kopplingen stängs så stängs också aktuellt program.
Så frågan blir då: Vet någon av er om det finns ett program som kan agera mellan X11 på min dator och och programmet på fjärr datorn i stil med exempelvis screen fast för x11 program?

Tekniskt sett så tycker jag att det borde vara fullt möjligt, jag undrar bara om någon har gjort det ännu...

Tja nog var det enkelt alltid. Så enkelt att jag nästan skäms lite över att jag postade här. Jag hade helt enkelt glömt att skriva funktionen getText().

Jag drar tillbaka frågan tills vidare. Vid närmare undersöknign så är det inte bara i den tråden som jag inte kommer åt den ärvda klassens funktioner. Jag har väl troligtvis gjort något litet fel som kompilatorn inte reagerar på...

Dags att fråga en C++ guru igen... Jag har en klass som startar en tråd i sin konstruktor, tråden i sin tur ska med jämna mellanrum sedan ändra i data ärvd av en anna klass, därför skickar jag med pekaren this till tråden och så långt är allt bra. Tråden klarar att komma åt medlemsfunktioner i den översta klassen men när den försöker röra en medlemsfunktion som är ärvd så stoppar ZeroLink programmet. Koden ser ni här och problemet uppstår vid denna rad: string s = getText();.

void GInputText::goAround()
{

bool there = false;
while (true)
{

if (getStat())
{

if (there)
{

string s = getText();
s = s.substr(0, s.size() - 1);
setText(s);
there = false;

}
else
{

string s = getText();
s = s + '_';
setText(s);
there = true;

}

}

else
{

if (there)
{

string s = getText();
s = s.substr(0, s.size() - 1);
setText(s);
there = false;

}

}

timespec t1, t2;
t1.tv_sec = 0;
t1.tv_nsec = blink * 1000000;
nanosleep(&t1, &t2);
}

}

Någon aning om hur jag skulle kunna komma åt den där funktionen som inte fungerar??

Senast redigerat 2004-07-06 08:45

Ok, tack. Jag ska ta mig en titt ....
En client/server variant var aldrig aktuellt i detta fallet eftersom jag inte ska konkurera med ICQ, det ända jag vill göra är att kunna skicka meddelanden till min bror som sitter i andra ändan av huset, det är så jobbigt att skrika eller gå och prata med honom direkt.

Senast redigerat 2004-04-11 13:06

Jepp. Jag tänkte mig multicast för att hålla reda på vilka som var på nätverket utan att använda någon server. När jag skickar meddelanden så skickar jag dock dem till direkta adresser så att man kan skicka privata meddelanden. Jag använder UDP för meddelanden också av två anledningar. Först och främst så tyckte jag det verkade lite enklare än TCP och allt vad det innebär med data strömmar. Den andra anledningen är att eftersom jag redan använde multicasting så kunde jag lika gärna använda UDP för meddelanden med, jag tror nämligen att det är extremt sällan som det försvinner några paket på lokala nätverk.
Om jag blir färdig med programmet någon gång så kan jag ladda upp det så att ni får se, lite inte allt för mycket på det dock, jag håller bara på att lära mig om java.

Tack så mycket! Jag ska testa om det fungerar omedelbart.

Jag använder mig av Datagram, det vill säga UDP. Ett exempel är detta där s är en String och socket är en DatagramSocket :
DatagramPacket packet = new DatagramPacket(s.getBytes(), s.length(), address, 2332);
socket.send(packet);

Jag håller på att skriva ett litet chat program i Java. Problemet är att när jag skickar ett meddelande till en PC som har samma program så blir åäöÅÄÖ alldeles fel. Jag trodde att String (som jag lagrar meddelandena i) hanterade unicode bokstäver. I vilket fall så är ju en temporär lösning att använda sig av replaceAll(String regex, String replacement) men det blir ju bara en temporär lösning, jag har ingen aning om hur det blir på tex. linux. Någon som har en aning om hur jag ska lösa problemet?

Tack så mycket för hjälpen!!

Nu börjar jag bli ganska desperat, så desperat att jag bara känner till en (möjlig) utväg...
Dagen började ganska bra med att jag påbörjade en renderings klass (GLUT/OpenGL) till mitt spel (C++). En av de viktigare delarna när man använder GLUT är ju att man spececifierar olika funktioner för vad som ska hända vid olika tillfällen (ex. bilden uppdateras, musen används, fönsterstorleken ändras osv.) och det är här mina problem kommer in. Jag lyckas inte välja medlems funktioner i klassen till dessa saker, här följer några exempel som jag provat men som inte fungerar.

Inte

glutDisplayFunc(rendfunc);

eller

extern renderer r;
glutDisplayFunc(r.rendfunc);
.

Jag har även provat med pekare, att göra om det till vanliga funktioner går inte eftersom meningen är att de i sin tur ska komma åt privata delar i klassen.

Någon C++ guru som har råd??