jedna klasa zarządza rozszerzalnym zestawieniem drugiej klasy

0

Cześć,
Mam taki problem, jak należy poprawnie napisać kod aby używać jedną klasę w drugiej. Sory za nie ogar, ale to mój pierwszy post a nie mogłem znaleźć odpowiedzi w google.
To mój kod:

#include <iostream>
#include <sstream>

class Obrabiarka 
{
private:
	Czas* zes = nullptr;
	int ilosc;
public:
	Obrabiarka();
	~Obrabiarka();
	void dodanie(Czas nowy);
	void odczyt();
	void odczyt_wybrany();
	void wypisanie_wszystkiego();
	Czas zsumowanie_wszystkiego(Czas suma);
};
#####################################################################################

#include "Obrabiarka.h"
#include "Czas.h"
#include <sstream>

Obrabiarka::Obrabiarka()
{
	ilosc = 1;
	zes = new Czas[ilosc];

}
Obrabiarka::~Obrabiarka() 
{
	delete[] zes;
}
void Obrabiarka::dodanie(Czas nowy)
{
	zes[ilosc - 1].calyczas(
		nowy.dsek(),
		nowy.dmin(),
		nowy.dgodz()
	);
	ilosc = ilosc + 1;

}
void Obrabiarka::odczyt()
{
	std::cout <<"ilosc czasów:" <<ilosc;

}
void Obrabiarka::odczyt_wybrany()
{
	int nr;
	std::cout << "który odczyt chcesz zobaczyć wpisz cyfre: ";
	std::cin >> nr;
	if (nr < ilosc)
	{
		zes[nr - 1].ileczasu;
	}
	else
	{
		std::cout << "Nie ma takiego numeru, wpisz jeszcze raz";
		std::cin >> nr;
	}
}
Czas Obrabiarka::zsumowanie_wszystkiego(Czas suma)
{
	for (int nr = 0; nr < ilosc; nr++)
	{
		suma += zes[nr];
	}
	return suma;
}
void Obrabiarka::wypisanie_wszystkiego()
{
	for(int nr =0; nr<ilosc; nr++)
	{
		zes[nr].ileczasu;
	}

}
###############################################3
#include "Czas.h"
#include <sstream>
void Czas::ustawsekundy(int a)
{
	if (a >= 0)
		sekundy = a;
	else {
		do 	{
			std::cout << "Sekundy muszą być w zakresie od 0 do 60 sekund ";
			std::cin >> a;
		} while (a < 0);
		sekundy = a;
	};
}
void Czas::ustawMinuty(int b)
{
	if (b > 0)
	minuty = b;
	else{
		do {
			std::cout << "Minuty muszą być w zakresie od 0 do 60 ";
			std::cin >> b;
		} while (b < 0);
		minuty = b;
	};
}
void Czas::ustawGodziny(int c)
{
	if (c >= 0)
	godziny = c;
	else { 
		do {
			std::cout << "Czas nie moze byc na minusie byczku, wpisz jeszcze raz godziny  ";
			std::cin >> c;
		} while (c < 0);
		godziny = c; 
	};
}
void Czas::ileczasu()
{
	std::cout << "Sekundy: " << sekundy << " Minuty " << minuty << " Godziny " << godziny;

}
void Czas::calyczas(int sek, int min, int godz)
{
	sekundy = sek;
	minuty = min;
	godziny = godz;

}
int Czas::dsek() {

	return sekundy;
}
int Czas::dgodz() {

	return minuty;
}
int Czas::dgodz() {

	return godziny;
}
Czas::Czas()
{
	minuty = 0;
	sekundy = 0;
	godziny = 0;
}
Czas::Czas(int sek)
{
	sekundy = sek;
	minuty = 0;
	godziny = 0;

}
Czas::Czas(int sek, int min)
{
	sekundy = sek;
	minuty = min;
	godziny = 0;

}
Czas::Czas(int sek, int min, int godz)
{
	sekundy = sek;
	minuty = min;
	godziny = godz;

}

Czas Czas::operator+(Czas& _czas2) 
{
	Czas temp = _czas2;
	temp.godziny += godziny;
	temp.minuty += minuty;
	temp.sekundy += sekundy;
	if (temp.sekundy >= 60) {
		temp.sekundy = temp.sekundy - 60;
		temp.minuty++;
	}
	if (temp.minuty > 60) {
		temp.minuty = temp.minuty - 60;
		temp.godziny++;
	}
	return temp;
}
Czas& Czas::operator=(Czas& _czas2)
{
	godziny = _czas2.godziny;
	minuty = _czas2.minuty;
	sekundy = _czas2.sekundy;
	return *this;
}
Czas& Czas::operator+=(Czas& _czas2) 
{
	godziny += _czas2.godziny;
	minuty += _czas2.minuty;
	sekundy += _czas2.sekundy;
	if (sekundy >= 60) {
		sekundy = sekundy - 60;
		minuty++;
	}
	if (minuty > 60) {
		minuty = minuty - 60;
		godziny++;
	}
	return *this;
}

bool Czas::operator==(Czas& _czas2)
{
	if (godziny == _czas2.godziny && minuty == _czas2.minuty && sekundy == _czas2.sekundy)
		return true;
	else
		return false;

}
bool Czas::operator>(Czas& _czas2) {
	if (godziny > _czas2.godziny)
		return true;
	else if (minuty > _czas2.minuty)
		return true;
	else if (sekundy > _czas2.sekundy)
		return true;
	else
		return false;
}
1

Co to znaczy używać jedną klasę w drugiej?
Co chcesz osiągnąć?

1

Brakuje nagłówka "Czas.h" i pewnie "main.cpp".
Jaki jest błąd? Co kompilator ci wypisuje?

0

Błąd : "Czas": "class" wpisz ponownie definicję

#include<iostream>

class Czas //klasa - definicja, opis
{
private:				//atrybuty 
	int sekundy;
	int minuty;
	int godziny;
public:
	void ileczasu();
	void ustawsekundy(int a); ///akesory
	void ustawMinuty(int b);
	void ustawGodziny(int c);
	void calyczas(int sek, int min, int godz);
	int dsek();
	int dmin();
	int dgodz();

	Czas operator+(Czas& _czas2);
	Czas& operator=(Czas& _czas2);	
	Czas& operator+=(Czas& _czas2);
	
	Czas();
	Czas(int sek);
	Czas(int sek, int min);
	Czas(int sek, int min, int godz);

	bool operator>(Czas& _czas2);
	bool operator==(Czas& _czas2);
};
0

Brakuje strażników lub #pragma once
Duplikujesz definicję Czas::dgodz() (błąd przy copy - paste).
Złe użycie ileczasu.

Po prostych poprawkach (czytasz prosty komunikat kompilatora i poprawiasz oczywiste rzeczy), kompiluje się: https://wandbox.org/permlink/ouMiRGlLsAFJgBIR

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