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

ISO C++ forbids declaration of " " with no type [-fpermissive] class

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
2,276 wizyt
pytanie zadane 5 kwietnia 2018 w C i C++ przez Mojbien Nowicjusz (120 p.)
edycja 5 kwietnia 2018 przez Eryk Andrzejewski

Witam serdecznie, podczas kompilowania programu GNU GCC Compiler wyświetla błąd:
error: ISO C++ forbids declaration of ' ' with no type [ - fpermissive]
Gdyby ktoś miał jakiś pomysł, bardzo prosił bym o podesłanie, poniżej wklejam krótki programik.

#include <iostream>
#include <cstdlib>
#include <math.h>
using namespace std;

class kwadrat{
    public:
        int dlugosc;
        pole();
        obwod();
};

kwadrat::pole()
{
    cout<<"Dlugosc boku: "<<dlugosc<<endl;
    cout<<"Pole wynosi : "<<dlugosc*dlugosc;
}

int main()
{
    kwadrat Mojkwadrat;
    Mojkwadrat.dlugosc=55;
    Mojkwadrat.pole();
    return 0;
}

 

komentarz 5 kwietnia 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Kod źródłowy proszę umieszczać w bloczku. Jest to opisane w FAQ.

2 odpowiedzi

+2 głosów
odpowiedź 5 kwietnia 2018 przez mokrowski Mędrzec (158,660 p.)
A metody pole() czy obwod() co zwracają?
+1 głos
odpowiedź 5 kwietnia 2018 przez Eryk Andrzejewski Mędrzec (164,260 p.)
edycja 5 kwietnia 2018 przez Eryk Andrzejewski
Metody pole() i obwod() nie mają określonego typu zwracanego, co jest wymagane przez standard języka C++. Aby naprawić problem, umieść nazwę typu (po kodzie wnioskuję, że ma to być void) przed nazwą metody w jej delkaracji oraz definicji. Poza tym nie masz zdefiniowanej metody obwod, co powinno skutkować błędem linkera: undefined reference...

P. S. Metody działające w ten sposób są raczej złym pomysłem, powinieneś rozdzielać warstwę logiki od warstwy prezentacji. Metody pole i obwod powinny więc tylko obliczać i zwracać wynik obliczeń.

Poza tym dobrą i powszechną praktyką jest nazewnictwo zmiennych po angielsku.

No i również należy ograniczać liczbę składowych publicznych do minimum, aby mieć całkowitą kontrolę nad tym co się dzieje z obiektem. A długość powinna być typu unsigned, trudno w końcu o kwadrat o ujemnym rozmiarze.

Podobne pytania

0 głosów
1 odpowiedź 9,971 wizyt
0 głosów
0 odpowiedzi 544 wizyt
pytanie zadane 29 listopada 2018 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)
0 głosów
1 odpowiedź 340 wizyt
pytanie zadane 17 sierpnia 2018 w C i C++ przez XSPACE Użytkownik (690 p.)

93,436 zapytań

142,431 odpowiedzi

322,667 komentarzy

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

...