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

Podział projekty na kilka plików

Aruba Cloud - Virtual Private Server VPS
+1 głos
684 wizyt
pytanie zadane 23 stycznia 2017 w C i C++ przez BeSSeSSt Obywatel (1,190 p.)

Tworzę właśnie grę, i chciałem umieścić klasę w innym pliku niż "main.cpp". Oczywiście umieściłem, ale nie kompiluje. Oto błąd: "expected class-name before ' { '  token". Oto kod:

pocisk.h:

#ifndef pocisk_h
#define pocisk_h

#include <SFML/Graphics.hpp>

class Strzal : public Drawable
{
public:

    bool canShoot = false;

    void strzal();

};

#endif

(jak można zauważyć dziedziczę po drawable w SFML)

 

pocisk.cpp:

#include "pocisk.h"
#include <SFML/Graphics.hpp>

#include <iostream>
void Strzal::strzal()
{
   //strzal...
}

 

a w main.cpp po prostu wywołanie metody strzal().

 

Proszę o pomoc

komentarz 23 stycznia 2017 przez C☺ndzi Stary wyjadacz (12,100 p.)
Pokaż maina.
komentarz 23 stycznia 2017 przez BeSSeSSt Obywatel (1,190 p.)

tyle co jest związane ze strzałem (dopiero co zacząłem)

 if (Keyboard::isKeyPressed(Keyboard::Up))
        {
            Strzal k;
            k.strzal();
        }

 

komentarz 23 stycznia 2017 przez C☺ndzi Stary wyjadacz (12,100 p.)
Może błąd jest do zupełnie innej linijki?
komentarz 23 stycznia 2017 przez BeSSeSSt Obywatel (1,190 p.)
Kompilator wskazuje na 7 linijke pliku pocisk.h , więc nie wiem
komentarz 23 stycznia 2017 przez niezalogowany
Pamiętaj, że kompilator może się mylić i nie zawsze wskaże ci linię kodu, w której rzeczywiście jest błąd.

1 odpowiedź

+2 głosów
odpowiedź 23 stycznia 2017 przez C☺ndzi Stary wyjadacz (12,100 p.)
wybrane 23 stycznia 2017 przez BeSSeSSt
 
Najlepsza

class Strzal : public sf::Drawable może?

komentarz 23 stycznia 2017 przez BeSSeSSt Obywatel (1,190 p.)
Dobra, przypomne sobie obiektówkę, ale póki co chce skończyć program :p. Czyli jak mam to mieć zapisane? Tyle że w pliku .h właśnie jest nagłówek metody strzal(), a w .cpp ciało...... Czyli jak to powinno wyglądać?
3
komentarz 23 stycznia 2017 przez niezalogowany
Plik nagłówkowy:
//strzal.h

class Strzal : public sf::Drawable
{
        sf::Sprite sprite; //prywatne atrybuty np. sprite, tekstura
        void draw(sf::RenderTarget& target, sf::RenderStates states) const
public:
        Strzal();     
}     

Plik źródłowy:

//strzal.cpp

Strzal::Strzal()
{
}

void Strzal::draw(sf::RenderTarget& target, sf::RenderStates states) const
{
        target.draw(sprite, states);
}

W mainie wywołanie:

Strzal obiekt;
window.draw(obiekt);

 

komentarz 24 stycznia 2017 przez BeSSeSSt Obywatel (1,190 p.)
Dobrze już działa :D. Dzięki :). A tak poza tematem, to jak stworzyłem vectora w funkcji main() to w pliku strzal.cpp co mam zrobić żeby móc z niego korzystać?
1
komentarz 24 stycznia 2017 przez Patryk Krajewski Nałogowiec (26,170 p.)
Możesz w pliku strzal.h stworzyć wskaźnik na ten wektor i ustawić go za pomocą funkcji np setVectorPtr(std::vector<typ>* arg1) albo w konstruktorze przesyłając jaką argument. Nie jestem pewien czy tak się tworzyło wskaźnik na wektor(wygoogluj to sobie)
1
komentarz 24 stycznia 2017 przez BeSSeSSt Obywatel (1,190 p.)
dobra dzięki :D pomogłeś :)

Podobne pytania

0 głosów
1 odpowiedź 387 wizyt
pytanie zadane 21 kwietnia 2017 w C i C++ przez ReapeRPL Nowicjusz (150 p.)
0 głosów
2 odpowiedzi 562 wizyt
0 głosów
0 odpowiedzi 228 wizyt
pytanie zadane 11 stycznia 2023 w C i C++ przez narusia Nowicjusz (120 p.)

93,335 zapytań

142,330 odpowiedzi

322,415 komentarzy

62,669 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...