Skocz do zawartości

Prosty Program Obiektowy


Daniello

Rekomendowane odpowiedzi

Napisałem prosty program składający się z klasy. Dopiero zaczynam się bawić w programowanie zorientowane obiektowo, więc wiecie. Oto kod:

#include <iostream>

class Cat
{
public:

void SetAge(int wiekkota);
void Zdanko();
int GetAge();

private:
int originalWiek;
};

Cat::SetAge(int wiekkota)
{
originalWiek = wiekkota;
}
Cat::GetAge()
{
return originalWiek;
}

Cat::Zdanko()
{
std::cout << "Teraz kotek ma " << GetAge() << " lat.\n";
}

int main()
{
Cat Mruczek;
std::cout << "Mruczek ma 0 lat.\n"
std::cout << "Wpisz wiek Mruczka: ";
int a;
std::cin >> a;
Mruczek.SetAge(a);
Mruczek.Zdanko();
return 0;
}

Nie chce się skompilować. Wywala masę błędów:

[daniel@localhost projects]$ g++ -o klasy klasy.cpp
klasy.cpp:15: error: ISO C++ forbids declaration of ‘SetAge’ with no type
klasy.cpp:15: error: prototype for ‘int Cat::SetAge(int)’ does not match any in class ‘Cat’
klasy.cpp:7: error: candidate is: void Cat::SetAge(int)
klasy.cpp:15: error: ‘int Cat::SetAge(int)’ cannot be overloaded
klasy.cpp:7: error: with ‘void Cat::SetAge(int)’
klasy.cpp:19: error: ISO C++ forbids declaration of ‘GetAge’ with no type
klasy.cpp:24: error: ISO C++ forbids declaration of ‘Zdanko’ with no type
klasy.cpp:24: error: prototype for ‘int Cat::Zdanko()’ does not match any in class ‘Cat’
klasy.cpp:8: error: candidate is: void Cat::Zdanko()
klasy.cpp:24: error: ‘int Cat::Zdanko()’ cannot be overloaded
klasy.cpp:8: error: with ‘void Cat::Zdanko()’
klasy.cpp: In function ‘int main()’:
klasy.cpp:33: error: expected `;' before ‘std’
[daniel@localhost projects]$

O co mu chodzi ?? Wydaje mi się ze dobrze zapisałem kod.

Odnośnik do komentarza
Udostępnij na innych stronach

Przy definicji skladowych klasy musisz rowniez podac jaki typ jest zwracany, nawet jesli chodzi o void. Czyli

void Cat::SetAge(int wiekkota)

itd. dla reszty. Jeszcze brakuje srednika tutaj:

std::cout << "Mruczek ma 0 lat.\n"

Odnośnik do komentarza
Udostępnij na innych stronach

Aha jeszcze jeden taki maly drobiazg. Jak juz dodajesz naglowek

#include <iostream>

to wystarczy ze ustalisz sobie przestrzen nazw na poczatku programu

using namespace std

i bedziesz mogl korzystac z elementow iostream bez podawania std::

 

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...