Dzaidek
Gauss:
Dziadek Mróz jesteś na forum ?
15 kwi 11:37
15 kwi 11:40
15 kwi 11:47
Gauss:
:(
15 kwi 12:15
Draghan: Nie smutaj.

Czy pierwszy link to ów "poprzedni program" z polecenia?
15 kwi 13:21
Gauss:
Draghan ogarniasz to może ? pierwszy link to kod który trzeba przerobić, w drugim linku jest
polecenie
15 kwi 13:23
Draghan: Pierwszy program jest na pewno dobry? Bo nie chce mi się sprawdzać.

Jeśli tak, to mało masz
do zrobienia.
15 kwi 13:27
Draghan: Masz teraz strukturę + funkcje.
Musisz zrobić klasę.
Klasa to struktura, rozszerzona o funkcje...

Łapiesz powoli...?
15 kwi 13:29
Gauss:
Nie bardzo, pomógłbyś napisać kod, to bym przenalizował ? HELP
15 kwi 13:33
Draghan: Tak wygląda Twoja obecna sytuacja w uproszczeniu:
struct przyklad
{
int a, b, c;
} abc;
void AddAB()
{
abc.c = abc.a + abc.b;
}
A po wprowadzeniu klasy, masz tak:
class przyklad
{
int a, b, c;
public: // musi być, jeśli chcesz żeby Twoja funkcja mogła być wywołana "na zewnątrz" klasy
void AddAB()
{
c = a + b; /* już nie podajesz abc.a, czy przyklad.a, bo jesteś w środku klasy, masz w
domyśle to, że wywołasz coś na rzecz tej właśnie klasy */
}
};
15 kwi 13:35
Draghan: Czy to, co napisałem wyżej, jest zrozumiałe?

Jeśli chociaż jakiegoś fragmentu nie rozumiesz
− pytaj. Nie ma głupich pytań.
15 kwi 13:36
Gauss:
i to jest całe rozwiązanie do tego zadania ? bo już lekki nieogar
15 kwi 13:37
Draghan: To jest na razie przykład. Do Twojego zadania dojdziemy za chwilę. Chciałbym, żebyś to
zrozumiał.
15 kwi 13:38
Gauss:
Ok, ja potrzebuje mięc rozwiązanie tego konkretnego zadania

Dasz radę pomóc ?
15 kwi 13:42
15 kwi 13:46
Dziadek Mróz:
Draghan, struktury też mają funkcje.
15 kwi 13:49
Gauss:
A mogę Cię jeszcze o coś prosić ?
15 kwi 13:51
Draghan: W C nie mają.

Ale nie dlatego tak napisałem − po prostu nie chciałem mieszać koledze.
15 kwi 13:51
Gauss:
Ale możesz to tak zrobić żeby dane były prywatne, a funkcje publiczne. ?
15 kwi 13:53
Draghan: Mnie możesz prosić, jasne.

Ale masz już obecnego swojego
Dziadka, więc chyba nie jestem
potrzebny.
15 kwi 13:53
Draghan: Można tak zrobić, jasne. Tylko że dalej w oryginalnym programie odnosisz się bezpośrednio do
tych danych − musiałbyś zrobić gettery i settery do tego.
15 kwi 13:55
Dziadek Mróz:
struct nazwa_struktury
{
char pole1;
int pole2;
...
void funkcja1();
int funkcja2(char);
int funkcja3(int);
...
nazwa_struktury();
nazwa_struktury(char, int);
...
~nazwa_struktury();
};
void nazwa_struktury :: funkcja1()
{
cout << pole1 << " " << pole2 << endl;
}
int nazwa_struktury :: funkcja2(char ch)
{
return (int)ch;
}
int nazwa_struktury :: funkcja3(int val)
{
return val;
}
nazwa_struktury :: nazwa_struktury()
{
cout << "Konstruktor domyślny struktury" << endl;
pole1 = '0';
pole2 = 0;
}
nazwa_struktury :: nazwa_struktury(char p1, int p2)
{
cout << "Konstruktor struktury" << endl;
pole1 = p1;
pole2 = p2;
}
~nazwa_struktury :: nazwa_struktury()
{
cout << "Destruktor struktury" << endl;
cout << "Usuwam strukturę" << endl;
}
15 kwi 13:56
Gauss:
Ale musi być tak zrobione właśnie, że dane prywatne, a funkcję publiczne
15 kwi 13:56
Dziadek Mróz:
Ale on w C++ pisze to może
15 kwi 13:56
Dziadek Mróz:
to co za problem w strukturze dajesz private i po problemie
15 kwi 13:57
Gauss:
chodzi o ten program który podesłał Draghan
15 kwi 13:57
Dziadek Mróz:
struct nazwa_struktury
{
private:
char pole1;
int pole2;
...
public:
void funkcja1();
int funkcja2(char);
int funkcja3(int);
...
nazwa_struktury();
nazwa_struktury(char, int);
...
~nazwa_struktury();
};
void nazwa_struktury :: funkcja1()
{
cout << pole1 << " " << pole2 << endl;
}
int nazwa_struktury :: funkcja2(char ch)
{
return (int)ch;
}
int nazwa_struktury :: funkcja3(int val)
{
return val;
}
nazwa_struktury :: nazwa_struktury()
{
cout << "Konstruktor domyślny struktury" << endl;
pole1 = '0';
pole2 = 0;
}
nazwa_struktury :: nazwa_struktury(char p1, int p2)
{
cout << "Konstruktor struktury" << endl;
pole1 = p1;
pole2 = p2;
}
~nazwa_struktury :: nazwa_struktury()
{
cout << "Destruktor struktury" << endl;
cout << "Usuwam strukturę" << endl;
}
15 kwi 13:57
15 kwi 13:57
Draghan: Gauss, w C++ struktury i klasy mają zatarte granice − można powiedzieć, że struktura to
jest klasa z domyślnym dostępem publicznym, niczym więcej się nie różnią.
W poleceniu było napisane, żeby zrobić klasę − tak też uczyniłem. Nic nie stoi na przeszkodzie,
żeby dać tam strukturę, jak pisze Dziadek.
15 kwi 14:01
15 kwi 14:06
15 kwi 14:12
Gauss:
Dziadek a wiesz jak zrobić to zadania już nie patrząc na mój kod ? Jakiś inny do drugiego
zadania
15 kwi 14:13
Dziadek Mróz:
Jeżeli w klasie zwracasz pola lub funkcje to nie trzeba używać this
public samochod() { }
public samochod(String imie, String nazwisko) {
Marka = marka;
Model = model;
}
15 kwi 14:13
Draghan: A co ma być źle...?

Pewnie nie możesz stworzyć obiektu, hmmm? Masz prywatny konstruktor.

No i akcesory wraz z mutatorami też powinny być raczej publiczne.

Poza tym:
1) nie tworzysz obiektu tej klasy, jak jest w poleceniu,
2) niepotrzebnie piszesz "this" wszędzie − jeśli go nie napiszesz, i tak będzie domyślnie
wywołany, więc niepotrzebnie męczysz klawiaturę.

3) zgubiłeś średnik na końcu...?
15 kwi 14:14
Draghan: Okej, ja się stąd zmywam, bo się tylko z
Dziadkiem duplikujemy.

Miłego dnia.
15 kwi 14:15
Dziadek Mróz:
class ...
{
...
};
int main()
{
...
}
15 kwi 14:15
Draghan: ...jeszcze tylko pytanie na szybko: czy typ String Ci działa...?
15 kwi 14:16
Dziadek Mróz:
int main()
{
moja_klasa obiekt1_klasy(); // obiekt1_klasy.pole1, itd
moja_klasa *obiekt2_klasy = new moja_klasa(); // i tu wtedy obiekt2_klasy−>pole1, itd
}
15 kwi 14:17
Gauss:
właśnie string nie działa i chciałem to jakoś przerobić ale nie wiem co dać zamist stringa ?
15 kwi 14:18
Draghan: Nie "String", tylko "std::string". I będzie trybić.
15 kwi 14:19
Dziadek Mróz:
Lub dać za bibliotekami:
using namespace std;
Proste programy można tak obchodzić.
15 kwi 14:22
Gauss:
nadal wywala błąd w 15 linijce
15 kwi 14:30
Dziadek Mróz:
Nic tam nie ma, pusta jest.
Podaj kod błędu i jego treść
15 kwi 14:31
15 kwi 14:33
Dziadek Mróz:
ALE JAKI BŁĄD?
15 kwi 14:34
Gauss: error expected ':' before 'void'
15 kwi 14:36
Dziadek Mróz:
Jaka jest różnica między:
public: samochod
i
public void setMarka
15 kwi 14:37
Dziadek Mróz:
to tak jakbyś w wypracowaniu napisał żubr i rzubr w jednym zdaniu
15 kwi 14:38
Gauss:
czyli void samochod ?
15 kwi 14:39
Dziadek Mróz:
samochod() jest konstruktorem nie potrzebuje typu
public samochod()
a Ty masz public: samochod()
15 kwi 14:40
Dziadek Mróz:
poczekaj bo mi się C# z C++ miesza
15 kwi 14:42
Dziadek Mróz:
najlepiej nie mieszaj w kodzie i wszystko co ma być private pisz w bloku:
private:
...
i co public w bloku:
public:
...
15 kwi 14:43
Gauss:
dzieki
15 kwi 14:43
Dziadek Mróz:
nie jakieś:
private int Rok;
private char Marka[20];
public Samochod() {}
public Samochod(int rok, char *marka) {}
tylko:
private:
int Rok;
char Marka[20];
public:
Samochod()
Samochod(int rok, char *marka) {}
15 kwi 14:45
Dziadek Mróz:
Działa?
15 kwi 14:55
Gauss:
tak, jest ok teraz
15 kwi 15:37
Dziadek Mróz:
W C++ nie ma czegoś jak:
public void funkcja();
tylko blok dostępu:
public:
void funkcja();
...
15 kwi 15:44