Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152

    [c++] errore di segmentation fault

    Salve a tutti!
    Non riesco a capire dove è l'errore nel codice seguente.
    Ho una classe "interse"

    file interse.h

    class interse
    {

    private:

    float m_xpoint;
    float m_ypoint;

    public:
    int intersect_label(float x11,float y11,float x12,float y12,float x21,float y21,float x22,float y22);

    void SetC(float X,float Y)
    {
    m_xpoint = X;
    m_ypoint = Y;
    }


    float GetCX(){ return m_xpoint;}
    float GetCY(){ return m_ypoint;}

    };

    file interse.cpp

    int interse::intersect_label(float x11,float y11,float x12,float y12,float x21,float y21,float x22,float y22)
    {

    point *point1_1 = new point(x11,y11);
    point *point1_2 = new point(x12,y12);
    point *point2_1 = new point(x21,y21);
    point *point2_2 = new point(x22,y22);

    line *A = new line(point1_1,point1_2);
    line *B = new line(point2_1,point2_2);

    float asc;
    float ord;
    asc = (B->GetQ() - A->GetQ()) / (A->GetM() - B->GetM());
    ord = (A->GetM() * asc) + A->GetQ();

    SetC(asc,ord);


    return 0;

    }

    L'esecuzione si blocca alla linea di codice "SetC(asc,ord)"
    restituendo un errore di seg fault
    Da cosa può dipendere??

    Ringrazio chiunque voglia darmi una mano!
    Ciao
    andry80

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Ci sono tutta una serie di cose di cui nn ci dai informazione... ad esempio l'oggetto point, l'oggetto line, ...

    Comunque penso che se l'errore è di segmentation fault
    asc = (B->GetQ() - A->GetQ()) / (A->GetM() - B->GetM());
    ord = (A->GetM() * asc) + A->GetQ();
    SetC(asc,ord);

    Probabilmente c'è un errore di allocazione/puntatori in quelle funzioni con cui le inizializzi, perchè setC di per se nn fa altro che assegnare due valori.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    152
    La classe point:

    class point
    {
    public:
    float x;
    float y;
    int i;
    point();
    point(float a, float b); //costruttore che assegna ad x e y i val a e b

    };

    ola classe line

    class line
    {
    private:

    float m; //coefficiente angolare^M
    float q; //intercetta^M

    public:
    line(float a, float b);
    line(point *A, point *B);
    float GetM();
    float GetQ();

    };

    line.cpp
    line::line(float a, float b){
    m=a;
    q=b;}


    line::line(point *A, point *B) {
    m = (B->y - A->y)/(B->x - A->x);
    q = ((B->x * A->y) - (A->x * B->y))/(B->x - A->x);}



    float line::GetM() { return m; }
    float line::GetQ() { return q; }


    Anche io all'inizio pensavo dipendesse da un'allocazione errata, data l'ora tarda quando ho scritto il codice, ma aiutandomi con
    una stampa di controllo seguente il calcolo di asc e ord :

    asc = (B->GetQ() - A->GetQ()) / (A->GetM() - B->GetM());
    ord = (A->GetM() * asc) + A->GetQ();
    cout << asc << " " << ord << endl;

    beh asc e ord li calcola in maniera corretta. Poi sul Set si blocca
    andry80

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.