• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nieznane mi błędy kompilacji [Code::blocks][C++][Nauka OOP]

Object Storage Arubacloud
0 głosów
163 wizyt
pytanie zadane 29 marca 2016 w C i C++ przez Iamhexi Obywatel (1,330 p.)

Witam! Mam taki projekt z użycie biblioteki graficznej allegro 5.

main.cpp:

#include <allegro5/allegro.h>
#include "kolizja.h"
#include <allegro5/allegro_image.h>
#include <allegro5/allegro_native_dialog.h>
#include <allegro5/allegro_font.h>
int szer=320, wys=240, rozm=10, x=140, y=100, punkty=0;
bool kolizja = 0;




int main()
{


    al_init();

    al_install_keyboard();

    al_init_font_addon();

al_init_image_addon(); // inicjowanie bitmap, możliwości odczytu jak i zapisu bitmap.

 al_shutdown_image_addon(); //wyłączenie bitmap.

    ALLEGRO_KEYBOARD_STATE klawiatura;


    ALLEGRO_DISPLAY *okno = al_create_display( szer, wys);

    al_set_window_title( okno,"LZ 129");

    ALLEGRO_BITMAP *kwadrat = al_create_bitmap(rozm,rozm);

    ALLEGRO_FONT *font8 = al_create_builtin_font();

    //ALLEGRO_BITMAP *andrzej = al_load_bitmap("andrzej.png");


    al_set_target_bitmap(kwadrat);

    al_clear_to_color(al_map_rgb(200,10,0));

    al_set_target_bitmap(al_get_backbuffer(okno));


    double czas = al_get_time();

    while( !al_key_down( &klawiatura, ALLEGRO_KEY_ESCAPE))

    {


Kwadrat k1;



        al_get_keyboard_state(&klawiatura);

        if ( al_get_time() > czas + 0.01)
        {

            if ( al_key_down(&klawiatura, ALLEGRO_KEY_RIGHT )   && x  <  szer-rozm && k1.kolizje() == 0) x=x+1 ;

            if ( al_key_down(&klawiatura, ALLEGRO_KEY_LEFT  )    && x  >               0 && k1.kolizje() == 0) x=x- 1 ;

            if ( al_key_down(&klawiatura, ALLEGRO_KEY_DOWN  ) && y < wys  -rozm && k1.kolizje() == 0) y=y+1 ;

            if ( al_key_down(&klawiatura, ALLEGRO_KEY_UP    )      && y  >               0 && k1.kolizje() == 0) y=y- 1 ;

            czas = al_get_time();
        }

        al_clear_to_color(al_map_rgb_f(0.5,0.5,0.5));

        al_draw_bitmap (kwadrat,x,y,0);

        al_draw_textf(font8,al_map_rgb(255,255,0), 10, 10, 0,"x=%3d , y=%3d", x, y);

        al_flip_display();

        al_rest(0.001);

    }

    al_destroy_bitmap(kwadrat);

    al_destroy_display(okno);

    return 0;
}


kolizja.h:
#include <iostream>

using namespace std;
class Kwadrat // tylko dla tworzenia obiektu jakim jest kwadrat
{
    public:
    int x_ob;
    int y_ob;
    int rozm_ob;

        Kwadrat(int=100, int=100, int=25);
        ~Kwadrat();

bool kolizje(); // sprawdza czy wystepuje kolizja miedzy postacia, a obiektem k1 . Jeżeli to prawda zwraca 1, jeżeli nie - 0.

};

kolizja.cpp:

#include <iostream>
#include "kolizja.h"
using namespace std;



Kwadrat::Kwadrat(int x_obiektu, int y_obiektu, int rozm_obiektu){
    x_ob = x_obiektu;
    y_ob = y_obiektu;
    rozm_ob = rozm_obiektu;

}





bool Kwadrat::kolizje(int x, int y, int rozm, bool kolizja, int k1.x_ob, int k1.y_ob){

if ( k1.y_ob == y + rozm /2 || k1.x_ob == x + rozm /2 )
{
    kolizja = 1;
}
else{
    kolizja = 0;
}


return kolizja;
    }



Kwadrat::~Kwadrat(){
//pusto, nie ma po czym czyscic pamieci
}











I otrzymuję nasępujące błędy: 
1. error: expected ',' or '...' before '.' token

2. error: prototype for 'bool Kwadrat::kolizje(int, int, int, bool, int)' does not match any in class 'Kwadrat'

3. error: candidate is: bool Kwadrat::kolizje()

Dodam, że nigdy nie miałem takich błędów, a błąd 1 znika, gdy usunie się kropki ze zmiennych w funkcji kolizje(); , ale wtedy kod jest nieporawny. Przepraszam z góry za błędy i głupoty, ale uczę sie dopiero OOP C++.

 

 

 

 

1 odpowiedź

+2 głosów
odpowiedź 29 marca 2016 przez criss Mędrzec (172,590 p.)
wybrane 29 marca 2016 przez Iamhexi
 
Najlepsza

Nie wiem do jakiej linii odnosi się 1 błąd.

2 i 3 (to jest jeden, trzeci jest rozwinięciem drugiego) oznacza, że zaproponowana przez ciebie definicja kolizje(int, int, int, bool, int) nie zgadza się z deklaracją w klasie. I to ma sens - w kwadrat.h zadeklarowałeś kolizje() bez argumentów, a próbujesz defuniować kolizje z pięcioma argumentami.

Swoją drogą: chyba już wiem do czego odnosi sie pierwszy błąd. Nazwy 4 i 5 argumentu w definicji kolizje. W nawiasie powinieneś wymieniać typy argumentów z ich nazwami, a nie przekazywać już jakieś wartości. Dlatego k1.x_ob nie ma sensu i nie może byc zaakceptowane jako nazwa.

komentarz 29 marca 2016 przez Iamhexi Obywatel (1,330 p.)

Bardzo dziękuję, wydaje mi się, że rozumiem. Jesteś mega

laugh

komentarz 29 marca 2016 przez Iamhexi Obywatel (1,330 p.)
edycja 29 marca 2016 przez Iamhexi

Czyli w kolizja.h:

bool kolizje(int, int, int, bool, int, int); ?

Tylko się upewniam czy pojmuję :)

komentarz 29 marca 2016 przez criss Mędrzec (172,590 p.)
Dokładnie. Możesz razem z nazwami, ale wg twojego uznania :)

Podobne pytania

0 głosów
2 odpowiedzi 779 wizyt
pytanie zadane 29 października 2015 w Rozwój zawodowy, nauka, praca przez UserAnonymous Początkujący (260 p.)
0 głosów
1 odpowiedź 258 wizyt
pytanie zadane 23 września 2015 w C i C++ przez Hlupo Początkujący (460 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...