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

Redefinition class - gdzie to robię

0 głosów
1,144 wizyt
pytanie zadane 29 kwietnia 2019 w C i C++ przez Dominik Modrzejewski Nowicjusz (140 p.)

Witam, gdy w dodaje w main plik nagłowkowy #include "MSSFMLView.h" to nagle wyskakuje komunikat o błędzie.

refefinition of class MinesweeperBoard, wydaje mi się, że jest to związane z złym dołączeniem plików nagłowkowych jednak ja błedu nie widze. Prosze o pomoc.

Tu link do projektu na githubie: https://github.com/pomiatacz/minesweeper

komentarz 29 kwietnia 2019 przez adrian17 Mentor (354,880 p.)
Nie dostaję u siebie tego błędu. Pokażesz proszę screenshot błędu (najlepiej całego okna)?

3 odpowiedzi

0 głosów
odpowiedź 30 kwietnia 2019 przez Rzepek Bywalec (2,050 p.)

Dodaj

#pragma once

na samym początku w plikach .h

komentarz 30 kwietnia 2019 przez adrian17 Mentor (354,880 p.)
Mimo że lubię #pragma once, to z tego co widzę klasyczne include guardy są wszędzie tam gdzie być powinny, więc AFAIK Twoja sugestia prawdopodobnie nie pomoże.
0 głosów
odpowiedź 30 kwietnia 2019 przez Szfierzak Gaduła (3,750 p.)

Myślę, że zupełnie niepotrzebnie dołączasz 

#include "MinesweeperBoard.h"

w pliku MSSFMLView.cpp skoro robisz to już w MSSFMLView.h

komentarz 30 kwietnia 2019 przez adrian17 Mentor (354,880 p.)
Są include guardy w MinesweeperBoard.h, na oko poprawne, więc nie widzę jak to mogłoby mieć związek.
0 głosów
odpowiedź 30 kwietnia 2019 przez mokrowski Mędrzec (158,960 p.)
1. Masz duży nieporządek we włączaniu nagłówków. Nie będę już zakładał klona na githubie podam Ci poniżej same źródła które mają poprawione włączanie nagłówków.

2. Pod systemem GNU/Linux, nie działa (choć nawet nie wiem czy miało działać), kliknięcie w pole. Ergo gra nie działa.

3. To słaby pomysł by dane typu szerokość/wysokość przetrzymywać w typie ze znakiem. Nie będą przecież miały wartości ujemnej.

4. To ogólnie słaby pomysł by przetrzymywać *.dll'ki w repozytorium. To nie są dane projektu.

5. Warto rozważyć posługiwanie się innym (niezależnym) systemem budowania niż Visual Studio. Teoretycznie powinien być niezależny od IDE i systemu operacyjnego. Ja dopisałem prosty Makefile wyłącznie do testów ale docelowo rozważał bym CMake lub Meson.

6. Nie formatujesz konsekwentnie kodu. Przecież są programy/wtyczki formatujące kod.

7. W nagłówkach stosuj klasy zapowiadające. Wciąganie nagłówków w każdym przypadku nie jest niezbędne. Ogólnie (i nie jest to pełen obraz) jeśli klasa jest używana przez wskaźnik lub referencję, nie wymaga nagłówka w pliku *.h. Zrobiłem Ci to w załączonych źródłach.

8. Zostawiasz zakomentowany kod. To ogólne zła praktyka i mści się w projektach.

9. Masz szereg atrybutów i zmiennych które nie są nigdzie użyte w kodzie.

10. Masz funkcje z których wychodzisz bez zwrócenia wartości.

Uwagi umieściłem w TODO

https://www.dropbox.com/s/486hnp9t74v837h/minesweeper.zip?dl=0
komentarz 30 kwietnia 2019 przez niezalogowany

state == FINISHED_LOSS; // TODO: Brak efektu?

11. Włącz ostrzeżenia kompilatora i naprawiaj proste błędy.

komentarz 30 kwietnia 2019 przez mokrowski Mędrzec (158,960 p.)
Już są włączone w Makefile. Na wersję VS kolega sam sobie już przełoży.
komentarz 30 kwietnia 2019 przez j23 Mędrzec (195,220 p.)

Projekt robiony był w Code::Blocks a nie VS.

bool MinesweeperBoard::hasFlag(int x, int y) const
{
    if(board[x][y].hasFlag==true)
        return true;
    if(board[x][y].hasFlag==false)
        return false;
    if(board[x][y].isRevealed==false)
        return false;
    if (x<0 or y<0)
        return false;
    if(x>board_width or y>board_height)
        return false;
}

OP zapomniał chyba, że kod w funkcji wykonuje się od góry do dołu, nie odwrotnie ;)

Podobne pytania

0 głosów
1 odpowiedź 430 wizyt
pytanie zadane 17 sierpnia 2018 w C i C++ przez XSPACE Użytkownik (690 p.)
0 głosów
0 odpowiedzi 986 wizyt
pytanie zadane 19 marca 2018 w Java przez misiek90 Użytkownik (730 p.)
0 głosów
2 odpowiedzi 2,472 wizyt

93,731 zapytań

142,668 odpowiedzi

323,286 komentarzy

63,289 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...