• 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

Object Storage Arubacloud
0 głosów
1,916 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 (155,460 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,523 wizyt
0 głosów
0 odpowiedzi 412 wizyt
pytanie zadane 29 listopada 2018 w C i C++ przez Shiro Stary wyjadacz (10,300 p.)
0 głosów
1 odpowiedź 280 wizyt
pytanie zadane 17 sierpnia 2018 w C i C++ przez XSPACE Użytkownik (690 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

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

...