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

Redefinition class - gdzie to robię

Object Storage Arubacloud
0 głosów
736 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 Ekspert (344,860 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 Ekspert (344,860 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 Ekspert (344,860 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 (155,460 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 (155,460 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 (194,920 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ź 276 wizyt
pytanie zadane 17 sierpnia 2018 w C i C++ przez XSPACE Użytkownik (690 p.)
0 głosów
0 odpowiedzi 497 wizyt
pytanie zadane 19 marca 2018 w Java przez misiek90 Użytkownik (730 p.)
0 głosów
2 odpowiedzi 1,899 wizyt

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,939 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!

...