Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » inhalte einer klasse in einer anderen verwenden

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ] [ 5 ]
020
29.08.2003, 11:16 Uhr
~darthvader
Gast


timerdone() ist public deklariert. aber in der funktion run() gibts ja schon probleme, dass hat ja nix mit timerdone() zu tun.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
29.08.2003, 11:31 Uhr
~darthvader
Gast


jetzt habe ich in übertragenstarten() ein a.wait() eingebaut und jetzt gibt er Test1 aus und dann "error : bind" und dann segmentation fault.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
29.08.2003, 12:42 Uhr
~darthvader
Gast


was liegt da der fehler?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
29.08.2003, 14:04 Uhr
Pablo
Supertux
(Operator)


Hast du den Namen auch im Prototypen geändert?
Ich wette, dass das Segmentation fault Fehler in der timerdone() Funktion liegt. Postet mal deinen Code zu dieser Funktion.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
29.08.2003, 14:20 Uhr
~darthvader
Gast


Welchen Namen im Prototypen?


Wie soll der Fehler in der Funktion stehen, wenn die noch nicht mal aufgerufen wird, weil er davor wegen einem Segmentation fault rausgeht.
Das Testprintf vor dem Aufruf wird doch nicht mehr ausgegeben!


der Fehler muss also an der Zeile liegen:


C++:
Form1 a;
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
29.08.2003, 14:23 Uhr
Pablo
Supertux
(Operator)


Ich meine die Funktion im Prototy. Hast du den Namen der Funktion im Prototyp auch geändert?

Zum Fehler Segmentation fault weiß ich wirklich nicht, was los ist. Der fehler tritt auf, wenn man was speichern will, aber bei der Deklaration Form1 a; sollte es nicht passieren. Hast du vielleicht Arrays im Default Konstruktor?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 29.08.2003 um 14:26 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
29.08.2003, 14:32 Uhr
virtual
Sexiest Bit alive
(Operator)


Wenn sich Dein Programm mit einem SIGSEGV verabschiedet, kann es sein, daß nicht alle Ausgaben wirklich gemacht werden. Du solltest Dir angewöhnen, solche Debugausgaben nicht nach stdout über printf zu machen, sondern nach stderr über fprintf; noch besser mittels cerr, weil wir und ja in C++ aufhalten. stderr wird nicht gepuffert (stdout schon!) und damit sofort ausgegeben.

Nun hast Du davon losgelöst mehrere Alternativen:
1. Du glaubst Deinem Programm, das sagt ja "error: bind". WEnn Du das bind nicht direkt verwendest, wir es wohl demanch jemand für dich getan haben. Ich kenn mich nicht mit den verwendeten Klassen aus, kann daher nur raten. Aber wenn im Ctor von Form1 das bind zB schief geht, dann wird es höchste Zeit, mal um das "Form1 a" einen try Block zu legen:

C++:
try
{
   Form1 a;
}
catch (std::exception& e)
{
    std::cerr<<e.what()<<std::endl;
}


Sollte Dir einen exception text ausgeben; kann sein daß von dir verwendete Klassenbibliothek schlecht ist, dann sind die Exceptions nicht von std::exception abgeleitet, dann musst Du eben noch in die QT Doku schaun, was da die Basisklasse für exeptions ist.
Jedenfalls kriegt man einen SIGSEGV ganz gerne bei nicht gefangenen Exceptions.

2. Du läßt das Programm abstürtzen und schaust dir den core mit einem Debugger deiner Wahl an. Mit dem gdb (von mir bevorzugt) ginge das so:

Code:
# gdb programm.exe core
> bt


Und du siehst genau, wo das ding in die Hose ging.

Wie dem auch sei: alles kein ANSI C mehr hier! :-(
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
29.08.2003, 14:35 Uhr
~darthvader
Gast


Das ist mein Konstruktor:


C++:
void Form1::init()
{
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include "hwstat.h"


    // Socket einrichten fuer UDP
   if (0 > (sfd = socket (AF_INET, SOCK_DGRAM, 0))) {
        fprintf (stderr, "error: socket\n");
        exit (-1);
    }

    // Addresse und Port des Servers
    memset (&srv_ip, 0, sizeof(srv_ip));
    srv_ip.sin_family = AF_INET;
    srv_ip.sin_port   = htons (PORTNR);
    inet_aton (SERVER_IP, &srv_ip.sin_addr);

    // Bind
    if (0 > bind (sfd, (struct sockaddr *) &srv_ip, sizeof(srv_ip))) {
        fprintf (stderr, "error: bind\n");
        close (sfd);
        exit (-1);
    }


    printf ("Server waiting for data ...\n");


}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
29.08.2003, 14:37 Uhr
virtual
Sexiest Bit alive
(Operator)



Tschuldige...
Aber Includes habe nie nie nie nie was in einer Funktion verloren.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
29.08.2003, 14:38 Uhr
~darthvader
Gast


Dann editier bitte meinen Code!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ] [ 5 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: