Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Problem z klasami i odwołaniami do nich

Ostatnio zmodyfikowano 2012-03-28 20:16
Autor Wiadomość
pentional
Temat założony przez niniejszego użytkownika
[C++] Problem z klasami i odwołaniami do nich
» 2012-03-26 19:20:00
Witam,
Poniżej mam parę błędów. Siedzę jużtroche nad tym i ciągle jakiś 'czeski błąd' popełniam.
Rzućcie okiem.
C/C++
#include <cstdlib>
#include <iostream>
#include <cmath>

using namespace std;

//******-------- KLASY ---------***********************************************
//-----------------------------punkt-------------------------------------------
class punkt
{
public:
    float x, y, punkty;
    punkt() // konstruktor domyslny
    {
        x = 0;
        y = 0;
        punkty++;
    }
   
    punkt( float cx, float cy ) // konstruktor z parametrami
    {
        x = cx;
        y = cy;
        punkty++;
    }
   
    ~punkt() // ----- destruktor
    {
        punkty--;
    }
   
    void wyswWspol() // ----- wspolrzedne
    {
        cout << "Lokalizacja:\nx --> " << x << " y --> " << y << "\n";
    }
   
    bool sprawdz( punkt a, punkt b )
    {
        if( a.x == b.x && a.y == b.y ) //--
             return 1;
        else
             return 0;
       
    }
}
//---------////-----///-------punkt----///----////-------///-----////-------//--
//----------------------------------------odcinek-----------------------------
class odcinek
{
public:
    odcinek() // konstruktor domyslny
    {
        punkt pierwszy;
        punkt drugi;
        pierwszy->x = 0;
        pierwszy->y = 0;
        drugi->x = 0;
        drugi->y = 0;
    }
   
    odcinek( punkt pierwszy, punkt drugi ) // konstruktor z parametrami
    {
        pierwszy->x = pierwszy;
        pierwszy->y = pierwszy;
        drugi->x = drugi;
        drugi->y = drugi;
    }
    ~odcinek();
   
    void wyswWspol()
    {
        cout << "Lokalizacja:\n pierwszy: x --> " << pierwszy->x << " y --> " << pierwszy->y;
        cout << "Lokalizacja:\n drugiy: x --> " << drugi->x << " y --> " << drugi->y;
    }
   
    float obDluOdc()
    {
        return sqrt(( pierwszy->y - pierwszy->x ) *( pierwszy->y - pierwszy->x ) +
        ( drugi->y - drugi->x ) *( drugi->y - drugi->x ) );
    }
}


///////////////////////////////////////dodac trojkat

int main()
{
    punkt * punktA = new punkt;
    punkt * punktB = new punkt( 33, 55 );
    punkt * punktC = new punkt( 100.9, 75.2 );
   
    cout << "Punkt z konstruktora domyslnego\n";
    punktA->wyswWspol();
   
    cout << "Punkty z konstruktora z parametrami\n";
    punktB->wyswWspol();
    punktC->wyswWspol();
   
    punkt * tabPkt = punkt[ 3 ];
    cout << "Tablica obiektów punktów\n";
    tabPkt[ 0 ].x = 1;
    tabPkt[ 0 ].y = 3;
    tabPkt[ 0 ].wyswWspol();
    tabPkt[ 1 ].x = 10;
    tabPkt[ 1 ].x = 20;
    tabPkt[ 1 ].wyswWspol();
    tabPkt[ 2 ].x = 15.99;
    tabPkt[ 2 ].x = 100.01;
    tabPkt[ 2 ].wyswWspol();
   
   
    odcinek * odcinekA = new odcinek;
    count << "Odcinek z konstruktora domyslnego\n";
    ocinekA->wyswWspol();
    cout << "Wspolrzedne odcinka\n";
    odcinekA->pierwszy->x = 44;
    odcinekA->pierwszy->y = 22;
    odcinekA->drugi->x = 1;
    odcinekA->drugi->y = 99;
    odcinekA->wyswWspol();
   
    cout << "odcinek dymaniczny\n";
    punkt * punktD = new punkt( 2, 5 );
    punkt * punktE = new punkt( 3, 6 );
    odcinek * odcinekB = new odcinek( punktD, punktE );
    odcinekB->wyswWspol();
   
    float dlugosc = odcinekB->obDluOdc();
    cout << "Dlugosc odcinka to: " << dlugosc << " \n";
   
    punktA( 45, 67 ), punktB( 65, 98 );
    bool z = sprawdz( punktA, punktB );
    if( x == 1 )
         cout << "Punkty sa takie same\n";
    else
         cout << "Punktyu sa rozne\n";
   
    cout << " Jest punktow: " << punkty;
   
    delete punktA;
    delete punktB;
    delete punktC;
    delete odcinekA;
    delete odcinekB;
    delete[] tabPkt;
   
   
   
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
}
P-53249
Chlorek
» 2012-03-27 23:39:31
Zapomniałeś o średniku po klamrze:
class costam
{
};

#Edit
Na przyszłość ludzie - błagam, podawajcie treść błędu, wtedy jest dużo łatwiej.
P-53333
pentional
Temat założony przez niniejszego użytkownika
» 2012-03-28 19:21:17
Poprawiłem.

Niestety są dalej problemy:
main.cpp: In constructor `odcinek::odcinek()':
 main.cpp:54: error: base operand of `->' has non-pointer type `punkt'
 main.cpp:55: error: base operand of `->' has non-pointer type `punkt'
 main.cpp:56: error: base operand of `->' has non-pointer type `punkt'
 main.cpp:57: error: base operand of `->' has non-pointer type `punkt'

 main.cpp: In constructor `odcinek::odcinek(punkt, punkt)':
 main.cpp:62: error: base operand of `->' has non-pointer type `punkt'
 main.cpp:63: error: base operand of `->' has non-pointer type `punkt'
 main.cpp:64: error: base operand of `->' has non-pointer type `punkt'
 main.cpp:65: error: base operand of `->' has non-pointer type `punkt'
 main.cpp: In member function `void odcinek::wyswWspol()':
 main.cpp:73: error: `pierwszy' undeclared (first use this function)
 main.cpp:73: error: (Each undeclared identifier is reported only once for each function it appears in.)
 main.cpp:74: error: `drugi' undeclared (first use this function)

 main.cpp: In member function `float odcinek::obDluOdc()':

 main.cpp:79: error: `pierwszy' undeclared (first use this function)
 main.cpp:80: error: `drugi' undeclared (first use this function)
 main.cpp: In function `int main()':
 main.cpp:99: error: expected primary-expression before '[' token
 main.cpp:113: error: invalid operands of types `<unknown type>' and `const char[35]' to binary `operator<<'
 main.cpp:114: error: `ocinekA' undeclared (first use this function)
 main.cpp:116: error: 'class odcinek' has no member named 'pierwszy'
 main.cpp:117: error: 'class odcinek' has no member named 'pierwszy'
 main.cpp:118: error: 'class odcinek' has no member named 'drugi'
 main.cpp:119: error: 'class odcinek' has no member named 'drugi'

 main.cpp:125: error: no matching function for call to `odcinek::odcinek(punkt*&, punkt*&)'
 main.cpp:48: note: candidates are: odcinek::odcinek(const odcinek&)
 main.cpp:61: note:                 odcinek::odcinek(punkt, punkt)
 main.cpp:51: note:                 odcinek::odcinek()
 main.cpp:131: error: `punktA' cannot be used as a function

 main.cpp:131: error: `punktB' cannot be used as a function
 main.cpp:132: error: `sprawdz' undeclared (first use this function)
 main.cpp:133: error: `x' undeclared (first use this function)
 main.cpp:138: error: `punkty' undeclared (first use this function)
P-53386
Chlorek
» 2012-03-28 20:16:08
No i czego nie rozumiesz? W błędach masz jasno napisane - gdzie, co i jak. Naucz się rozwiązywać problemy sam. Wrzucasz log kompilacji z 20 błędami i oczekujesz, że każdy teraz Ci wypiszę z łopatologicznym tłumaczeniem i tym jak poprawić. Dla przykładu:
"main.cpp:74: error: `drugi' undeclared (first use this function)"
Czego nie rozumiesz w tym przykładowym błędzie? O ile nie jesteś nowy w programowaniu (a nie jesteś skoro już takie rzeczy potrafisz napisać) to powinieneś bez większego problemu to poprawić.
Tak poza tym chcę jeszcze zwrócić uwagę, że Twój kod w ogóle się za bardzo "kupy nie trzyma". Co najmniej masakryczne, w ogóle nie masz pojęcia o klasach, zacznij od kursu C++, potem pisz programy.
P-53402
« 1 »
  Strona 1 z 1