Pomoc w szukaniu błedu c++ klasy

0

Odnawiam temat i przepraszam za błędne nazwanie poprzedniego.

 #include <iostream>
#include <string>

using namespace std;

class figura()
{
    private :
    int pozx;
    int pozy;
    string kolor;
    int grubosclini;


    public :
    int getx()
    {
        return pozx;

    }
       int gety()
    {
        return pozy;

    }
       string getc()
    {
        return kolor;

    }
       int getl()
    {
        return grubosclini;

    }
    void polozenie(int a,int b) {
        pozx = a;
        pozy = b;
    }

    void zmienkolor (string c)
    {
        kolor = c;

    }

    void grubosc (int d)
    {
        grubosc = d;

    }

    figura(int a, int b, string c , int d)
    {
        pozx = a;
        pozy = b;
        kolor = c;
        grubosclini = d;

    }
    figura(figura &o)
    {
        pozx = 0;
        pozy = 0;
        kolor = o.kolor;
        grubosclini = o.grubosclini;


    }
    virtual void wyswietl()
    {
        cout<<" wyswietlanie"<<pozx<<endl;
        cout<<" wfasdmf asd" <<pozy<<endl;
        cout<<" wfasdmf asd" <<kolor<<endl;
        cout<<" wfasdmf asd" <<grubosclini<<endl;
    }
    virtual ~figura ()
    {

        cout << "destruktor wirtualny" <<endl;

    }
};

class okrag : public figura{
    private:
    int promien;
    static int licznik;


    public:
    okrag():figura(3,5,"bialy",6)
    {

        promien = 3;

    }
    virtual ~ okrag ()

    {
        cout<< " deoko virt klasy okrag"<<endl

    }
    void wyswietl () {

    cout<<" wywietlanie" << getx();
    cout<<" wywietlanie" << gety();
    cout<<" wywietlanie" << getc();
    cout<<" wywietlanie" << getl();
};

int main () {
figura dwunastokat;
okrag pilka;
dwunastokat.wyswietl();
pilka.wyswietl();
pilka.setpox(100);
pilka.setpoz(100);
pilka.setkolor(niebieski);
pilka.wyswietl();
kopiapilka(pilka);
};

kompilator wykazuje mi błąd :
line 6 error: expected unqualified-id before ')' token|
== Build finished: 1 errors, 0 warnings ===

Jestem jeszcze początkującym programistą. I niestety nie jestem wstanie odnaleźć błędu w kodzie. Sądzę że jest to jakaś błahostka, więc jak mógłby ktoś poświęcić kilka minut byłbym wdzięczny

1

class figura()

()

0

Już też udało mi się wychwycić ten błąd, ale dziękuję :)
po usunięciu go znalazłem wiele innych i stopniowo je usuwałem. Został mi tylko problem z mainem.

Odświeżony kod :

 
#include <iostream>
#include <string>

using namespace std;

class figura
{
    private :
    int pozx;
    int pozy;
    string kolor;
    int grubosclini;


    public :
    int getx()
    {
        return pozx;

    }
       int gety()
    {
        return pozy;

    }
       string getc()
    {
        return kolor;

    }


       int getl()
    {
        return grubosclini;

    }

    void polozenie(int a,int b) {
        pozx = a;
        pozy = b;
    }

    void zmienkolor (string c)
    {
        kolor = c;

    }

    void grubosc (int d)
    {
        grubosclini = d;

    }



    figura(int a, int b, string c , int d)
    {
        pozx = a;
        pozy = b;
        kolor = c;
        grubosclini = d;

    }
    figura(figura &o)
    {
        pozx = 0;
        pozy = 0;
        kolor = o.kolor;
        grubosclini = o.grubosclini;


    }
    virtual void wyswietl()
    {
        cout<<" wyswietlanie"<<pozx<<endl;
        cout<<" wfasdmf asd" <<pozy<<endl;
        cout<<" wfasdmf asd" <<kolor<<endl;
        cout<<" wfasdmf asd" <<grubosclini<<endl;
    }
    virtual ~figura ()
    {

        cout << "destruktor wirtualny" <<endl;

    }
};

class okrag : public figura{
    private:
    int promien;
    static int licznik;


    public:
    okrag():figura(3,5,"bialy",6)
    {

        promien = 3;

    }

    virtual ~ okrag ()

    {
        cout<< " deoko virt klasy okrag"<<endl;

    }
    void wyswietl () {

    cout<<" wywietlanie" << getx();
    cout<<" wywietlanie" << gety();
    cout<<" wywietlanie" << getc();
    cout<<" wywietlanie" << getl();
}

int main() {
figura dwunastokat(3,5,"czerwony",5);

okrag pilka;
dwunastokat.wyswietl();
pilka.wyswietl();
pilka.setpozx(100);
pilka.setpozy(100);
pilka.setkolor("niebieski");
pilka.wyswietl();
okrag kopiapilka(pilka);
}

zamieszczam log z kompilatora. Jest w stanie mi ktoś coś doradzić ?

C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|129|error: expected '}' at end of input|
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp||In member function 'int okrag::main()':|
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|124|error: 'class okrag' has no member named 'setpozx'|
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|125|error: 'class okrag' has no member named 'setpozy'|
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|126|error: 'class okrag' has no member named 'setkolor'|
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|129|error: expected unqualified-id at end of input|
== Build finished: 5 errors, 0 warnings ===

1

W tym twoim pierwszym kodzie w klasach brakuje metod, które wywołujesz w main.

edit: w tym, który przed chwilą edytowałeś też nie.

0

Tak jak napisałem jeszcze jestem początkujący, co konkretnie masz na myśli przez metody ? :P Prosiłbym o łopatologiczną odpowiedz :)

po małych poprawkach log zmienił sie na
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|90|error: new types may not be defined in a return type|
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|90|note: (perhaps a semicolon is missing after the definition of 'okrag')|
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|122|error: two or more data types in declaration of 'main'|
== Build finished: 2 errors, 0 warnings ===

Po definicji klasy okrag zapomniałem średnika.
powraca błąd
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp||In function 'int main()'Neutral
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|128|error: 'class okrag' has no member named 'setpozx'|
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|129|error: 'class okrag' has no member named 'setpozy'|
C:\Users\Arudiano Don Adriano\Desktop\poprawki.cpp|130|error: 'class okrag' has no member named 'setkolor'|
== Build finished: 3 errors, 0 warnings ===

1
 class figura
{
    private :
    int pozx;
    int pozy;
    string kolor;
    int grubosclini;
 

Tutaj jest problem. Zmienne zdefiniowane jako "private" nie są dostępne w podklasach. Musi być albo "public" albo "protected".


Wiem, że rozwiązywanie takich problemów samodzielnie jest dużo bardziej kształcące, ale też bardzo denerwujące szczególnie na początku.

0

Udało mi się dokończyć program. Dziękuję wszystkim za pomoc i dobre rady.
Pozostała mi tylko ostatnia część zadania :

Zaimplementować funkcję globalną zaprzyjaźnioną z obiema klasami, przyjmującą jako parametry referencje do obiektu z klasy Okrąg i referencje do obiektu z klasy Figura, sprawdzającą czy pozycja obiektu z klasy Okrąg jest taka sama jak pozycja obiektu z klasy Figura. Zaprezentować mechanizm późnego wiązania w oparciu o funkcje wirtualną Wyświetl.

i jesli mam byc szczery to nie mam bladego pojęcia o co chodzi. Razz może mi ktoś w skrócie wyjaśnić ?

0
reszkov napisał(a)

Udało mi się dokończyć program. Dziękuję wszystkim za pomoc i dobre rady.
Pozostała mi tylko ostatnia część zadania :

Zaimplementować funkcję globalną zaprzyjaźnioną z obiema klasami, przyjmującą jako parametry referencje do obiektu z klasy Okrąg i referencje do obiektu z klasy Figura, sprawdzającą czy pozycja obiektu z klasy Okrąg jest taka sama jak pozycja obiektu z klasy Figura. Zaprezentować mechanizm późnego wiązania w oparciu o funkcje wirtualną Wyświetl.

i jesli mam byc szczery to nie mam bladego pojęcia o co chodzi. Razz może mi ktoś w skrócie wyjaśnić ?

NIE.
Naucz się podstaw języka C++ i obiektowości we własnym zakresie z książki/internetu,a nie co chwila ludziom będziesz dupę zawracał czymś nowym.

0

sory...dzięki waszej pomocy dużo i szybko się nauczyłem, myślałem że od tego jest to forum. Ktoś miał ochotę napisać pisał nie to nie. Ale skoro tak się do sprawy podchodzi to nie będę wam więcej głowy zawracał . Temat do zamknięcia. Pozdrawiam

0

No cześć.

0

Forum o ile wiem NIE JEST substytutem dla książek/kursów internetowych.Nie znajdziesz frajerów którzy będą ci tłumaczyli wszystko czego nie wiesz dlatego,że nie zapoznałeś się z podstawami opisanymi w dostępnej literaturze.

0

Wyskoczyles ze smiesznym problemem ale koledzy ci pomogli bo to byla konkretna sprawa. Oczekujesz teraz, ze bedziesz rzucal po kolei kolejnymi zagadnieniami C++ i bedziemy ci to tlumaczyc? Google, literatura, dokumentacja. Po co po kolejny raz pisac cos co w google znajdzie sie w sekunde. To nie prywatne korepetycje

0

Staramy się oszczędzić trochę czasu naszego i twojego. Po co masz zakładać temat, a my na niego odpowiadać jak można to znaleźć na googlach. Założenie tematu trwa więcej niż szybkie przeszukanie internetu i jako informatyk powinieneś minimalizować swój wysiłek i czas (kreatywne lenistwo jest jedną z zalet informatyków).

Z drugiej strony jak wszyscy by umieli używać googli i znali angielski, to to forum by nie istniało, ostałby się tylko SO.

1 użytkowników online, w tym zalogowanych: 0, gości: 1