Prosta klasa, prośba o sprawdzenie zgodności z poleceniem

0

Witajcie,
mam do napisania coś takiego:

Klasa , konstruktory i destruktory, przeciążanie funkcji i operatorów

  1. Zaprojektować zestaw trzech klas będących obiektowym odwzorowaniem Piekarnika, z których jedna będzie klasą główną, reprezentującą cały obiekt i będzie zawierać dwa obiekty pozostałych klas (podobiekty; w tym jeden automatyczny i jeden dynamiczny). Podobiekt dynamiczny oznacza, że polem obiektu głównego jest wskaźnik na podobiekt (do celów tego projektu w konstruktorze domyślnym ma być inicjowany na zero). Odwzorowanie powinno być możliwie realistyczne - dla skomplikowanych obiektów odpowiednio uproszczone. Zaprojektowane klasy będą wykorzystywane w następnym projekcie – ewentualnie będą modyfikowane.
  2. We wszystkich konstruktorach i destruktorach wstawić kod drukujący na ekran informację o wywołaniu (warunkowo, pod zmienną kompilacji TESTPR). Wydruki te będą pomocne w czasie śledzenia sekwencji wywołania konstruktorów i destruktorów.
  3. Klasa główna ma zawierać mechanizm określania liczby stworzonych obiektów tego typu (statyczne pole klasy), oraz statyczną metodę zwracającą to statyczne pole klasy (chodzi o możliwość uzyskania informacji o braku instancji klasy).
  4. Każda klasa powinna prawidłowo zachowywać się w przypadku kopiowania – rozważyć realizację konstruktora kopiującego lub użycie standardowego konstruktora kopiującego lub zabronienie kopiowania obiektów klasy. Podobnie rozważyć operator przypisania dla klas.
  5. Zaprojektować i zaimplementować dla klas kilka sensownych, różnorodnych operatorów, w tym: jeden jednoargumentowy, jeden dwuargumentowy, jeden konwersji, jeden indeksowy. Zastosować wybrane operatory jako metody klas oraz jako funkcje zaprzyjaźnione z klasami.
  6. Napisać program główny testujący klasę główną i jej podklasy (oddzielny moduł/plik). Dla testów stworzyć obiekty automatyczne, dynamiczne i statyczne (lokalne, globalne) w funkcji main i innej funkcji testowej (w trakcie testu powinno powstać co najmniej kilkanaście obiektów). Celem powyższych testów jest między innymi obserwowanie czasu życia obiektów oraz zachowanie się funkcji i operatorów przeciążonych. Fragment programu powinien testować kopiowanie obiektów. Program testowy powinien być nieinterakcyjny (statyczny) z odpowiednią liczbą wydruków objaśniających, co zaszło w czasie działania programu.

Stworzyłem coś takiego, ale wiem że mam minimalne błedy w tych klasach, pomoglibyście mi je załatać?
Wszystkie poza podpunktem 2. który dodam na samym końcu.
Z góry dziękuje i podsyłam kod nad którym się męcze

 
#include <iostream>
#include "piekarnik.h"

using namespace std;


int main(int argv, char **argc)
{
    bool showContructionInfo = static_cast<bool>(argc[1]);
    cout << showContructionInfo << endl;
    Piekarnik::pokazIloscPiekarnikow();
    Piekarnik piekarnik1; //Deklaracja klasy glownej
    Piekarnik::pokazIloscPiekarnikow();

    return 0;
}
#ifndef PIEKARNIK_H_INCLUDED
#define PIEKARNIK_H_INCLUDED

enum Typ_pieczenia {ZERO, TERMOOBIEG, GORADOL, GORA}; // i inne typy pieczenia
enum Typ_ciasta {BRAK, SERNIK, JABLECZNIK, MAKOWIEC}; // i inne typy ciast

class Program //Opis klasy dla pierwszego podobiektu
{
public:
    int temperatura = 0;
    enum Typ_pieczenia ustawiony_na = ZERO;   //Program. = TEROMOOBIEG
};

class Ciasto
{
public:
    enum Typ_ciasta rodzaj = BRAK;
};

class Piekarnik //A tu deklaracja klasy glownej, z podobiektami
{
    static int iloscPiekarnikow;

public:
    Program obecnyProgram; //Tu statyczny podobiekt
    Ciasto * wlozoneCiasto = 0; //A tu dynamiczny zainicjalizowany za 0

    Piekarnik(); //Deklaracja kontruktora
    Piekarnik(const Piekarnik &piekarnik);
    ~Piekarnik(); //Deklaracja destruktora

    static void pokazIloscPiekarnikow();

};

int Piekarnik::iloscPiekarnikow = 0;

#endif // PIEKARNIK_H_INCLUDED
 
 #include "piekarnik.h"

Piekarnik::Piekarnik() //Kontruktor
{
    podObiekt2 = new podKlasa2; //Dynamiczne zaalokowanie dynamicznego obiektu
    iloscPiekarnikow++;
}
Piekarnik::~Piekarnik() //Destruktor
{
    delete podObiekt2; //Usuniêcie dynamicznego obiektu
    iloscPiekarnikow--;
}

Piekarnik::Piekarnik(const Piekarnik &piekarnik)
{
        obecnyProgram = piekanik.obecnyProgram;
        wlozoneCiasto = * piekarnik.wlozoneCiasto;

}
void Piekarnik::pokazIloscPiekarnikow() //pomijamy static
{
    cout << "Ilosc stworzonych piekarnikow: " << iloscPiekarnikow << endl;
}
0

Skoro wiesz, że masz minimalne błędy, to z pewnością również i minimalny wysiłek będzie konieczny aby je załatać. Ewentualnie wskaż je i powiedz co sprawia Ci trudność w naprawianiu ich.

0
Piekarnik::Piekarnik(const Piekarnik &piekarnik)
{
        obecnyProgram = piekanik.obecnyProgram;
        wlozoneCiasto = * piekarnik.wlozoneCiasto;
 
}

czy to jest poprawna inicjalizacja konstruktora kopiującego, szczególnie chodzi mi o ten obiekt dynamiczny?

     Piekarnik::pokazIloscPiekarnikow();
    Piekarnik piekarnik1; //Deklaracja klasy glownej
    Piekarnik::pokazIloscPiekarnikow(); 
undefined reference to `Piekarnik::pokazIloscPiekarnikow()'|
undefined reference to `Piekarnik::Piekarnik()'|
undefined reference to `Piekarnik::pokazIloscPiekarnikow()'|
undefined reference to `Piekarnik::~Piekarnik()'|
undefined reference to `Piekarnik::~Piekarnik()'|
1

Strasznie głupawe zadanie. Piekranik?! To nie jest coś, co nadaje się do takich zabaw. Standardowy przykład to np. samochód. Nie mam pojęcia z czego (sensownego w tym zadaniu) składa się piekarnik. No ale już z tym nic nie zrobisz. Dodatkowo punkt 5 to jakieś kuriozum, nie można wymyślić zbyt wielu sensownych operatorów dla piekarnika. Co miało by oznaczać indeksowanie piekarnika?! Albo dodawanie piekarników? Dlaczego nie wymyśla się zadań, które mają jakikolwiek sens?

Twoje rozwiązanie też jest dziwaczne. Piekarnik w żadnym wypadku nie składa się z ciasta, które piecze. Ten konstruktor kopiujący jest niepoprawny (pomijając brak sensu, nie skompiluje się i tak). A błędy dalej wynikają z tego, że nie kompilujesz i nie linkujesz pliku ze źródłem tej klasy.

0

Wiem że nie składa się z ciasta, ale można przyporządkować mu obiekt dynamiczny ciasto, no nie wiem, nie mam lepszego pomyslu na to zadanie
pomożesz mi poprawić konstruktor kopiujący?

A błędy dalej wynikają z tego, że nie kompilujesz i nie linkujesz pliku ze źródłem tej klasy

co konkretnie powinienem zrobić? Code::Blocks

1 użytkowników online, w tym zalogowanych: 0, gości: 1