Obiektowość klasy

0

Cześć. Wymyśliłem, że spróbuję zrobić zadanie z obiektowości i za cel dałem sobie stworzenie klasy:

 class Person
{
private:
	std::string name;
	std::string surname;
	unsigned short age;
	double cash;
	std::string place;

Następnie sobie wszystko rozwijam i przy imieniu jeśli jest ono napisane literami drukowanymi to ma zostać, natomiast jeśli któraś litera nie jest duża to program ma imię zastąpić na imię "ANTHONY". - i tu mi wszystko działa tak jak powinno.

 void setName(std::string name) 
	{
		bool orOnlyBigLetter = true;
		for (int i = 0; i < name.length(); ++i)
		{
			if (!isupper(name[i]))
			{
				orOnlyBigLetter = false;
				break;
			}
		}
		if (orOnlyBigLetter == true)
		{
			this->name = name;
		}
		else
		{
			this->name = "ANTHONY";
		}
	}

Potem robię kilka innych rzeczy z nazwiskiem i wiekiem. Problem właśnie pojawia się jak natrafiam na wiek. Jak wiadomo wiek jest tylko dodatni więc użyłem "unsigned short". Problem jest taki, że nie wiem jak mam go przeglądać w pętli, bo

 for (int i = 0; i < age.length(); ++i)

nie działa. Może mi ktoś powiedzieć co powinienem użyć zamiast length?

0

Co znaczy że chcesz przeglądać wiek?

0

Miałem na myśli to, że jeżeli wiek będzie w przedziale <18, 60> to mam zostawić a jak będzie mniejszy bądź większy to przypisać 84.

2

Jak w pętli? Zwykły if else

age = (age <= 18 || age >= 60) ? 84 : age;
0

Działa, dzięki. A czy w przykładzie z imieniem również da radę mój zapis skrócić do Twojego?

4
bool onlyUpper = all_of(name.begin(), name.end(), ::isupper);

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