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

question-closed [C++]Prosty błąd w klasie w .h (Problem z konstruktorem)

0 głosów
889 wizyt
pytanie zadane 14 lipca 2015 w C i C++ przez Dorion300 Szeryf (90,250 p.)
zamknięte 15 lipca 2015 przez Dorion300

Dzień dobry.

Zrobiłem 2 małe klasy w jednym pliku.

Działa wspaniale.

Chciałem stworzyć .h tego pliku .cpp aby rozwiązać niektóre problemy.

Wyskakuje błąd w pliku .h:
ClassCS.h|28|error: expected '{' at end of input|

W czym może być mniej więcej problem?

Jak daję {} zamiast ; to cały program się rypie. (Jeszcze więcej błędów)

 

#ifndef CLASSCS_H_INCLUDED
#define CLASSCS_H_INCLUDED

#include "../main.h"

using namespace std;

const int DTyping = 2;
enum Typing
{
    test,dwa
};

class classCS
{
public:
    string nazwa;
    Typitem Typing;
    classCS(string nazwa);

};

class classCSDwa: public classCS
{
    public:
    int cyfra;
    classCSDwa(string nazwa,int cyfra) : classCS(nazwa); // tu błąd
    void randomowafunkcja();
};

#endif // CLASSCS_H_INCLUDED 

 

komentarz zamknięcia: Usunięcie ": classCS(nazwa)" pomogło.

2 odpowiedzi

+1 głos
odpowiedź 15 lipca 2015 przez Radfler VIP (101,030 p.)
wybrane 15 lipca 2015 przez Dorion300
 
Najlepsza

W linii 27 nie ma ciała konstruktora! Sama lista inicjalizacyjna nie wystarczy :)

classCSDwa(string nazwa,int cyfra)
: classCS(nazwa) { /* musi być ciało */ }
komentarz 15 lipca 2015 przez Dorion300 Szeryf (90,250 p.)
Jest w .cpp cały konstruktor.

A to jest tylko definicja.
komentarz 15 lipca 2015 przez Radfler VIP (101,030 p.)

To przenieś listę inicjalizacyjną do pliku .cpp, a w nagłówku zostaw samą deklarację:

Plik .h:

classCSDwa(string, int);

Plik .cpp:

classCSDwa(string nazwa, int cyfra)
: classCS(nazwa) { /* ciało */ }
+1 głos
odpowiedź 14 lipca 2015 przez Krawiec91 Pasjonat (19,600 p.)

W 18 linii nie powinno być tak czasem?;)
 

Typing Typitem ;

 

komentarz 14 lipca 2015 przez Krawiec91 Pasjonat (19,600 p.)
Linia 27 to jest lista inicjalizacyjna konstruktora klasy? Może dać za tym 2 klamry {} i bez średnika.
komentarz 14 lipca 2015 przez Dorion300 Szeryf (90,250 p.)
Dobrze jest napisane, gdyż to jest deklaracja obiektu z innego pliku .h, Kiedy tak robię ze wywalam srednika i zamiast tego wstawiam {} to wywala błąd ze klasa jest nie dostępna(coś w tym stylu)
komentarz 15 lipca 2015 przez adrian17 Mentor (355,240 p.)

Dobrze jest napisane, gdyż to jest deklaracja obiektu z innego pliku .h,

Nawet jeśli tak jest, to trochę dziwne że zrobiłeś pole o nazwie Typing podczas gdy kilka linii wyżej zadeklarowałeś enum o nazwie Typing.

Kiedy tak robię ze wywalam srednika i zamiast tego wstawiam {} to wywala błąd ze klasa jest nie dostępna(coś w tym stylu)

Dodanie {} prawdopodobnie naprawiło problem, kompilator mógł pójść dalej i natrafił na inny, niezwiązany problem - musisz pokazać nowy błąd.

Podobne pytania

0 głosów
2 odpowiedzi 1,525 wizyt
pytanie zadane 31 lipca 2015 w C i C++ przez alfred Początkujący (270 p.)
0 głosów
2 odpowiedzi 336 wizyt
pytanie zadane 30 września 2015 w Java przez Damianoo4444 Bywalec (2,700 p.)
0 głosów
2 odpowiedzi 1,123 wizyt
pytanie zadane 22 listopada 2016 w C i C++ przez Kenzi Nowicjusz (200 p.)

93,773 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,377 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.

...