feat(cmat): Completed Ex61 Part 2

This commit is contained in:
2026-10-08 10:16:23 +02:00
parent 4e2e5f72a2
commit 5993dd1dc8
3 changed files with 76 additions and 66 deletions
+7
View File
@@ -1,10 +1,17 @@
#include "Person.h"
#include "PersonException.h"
#include "YoungPerson.h"
#include <cstddef>
#include <iostream>
#include <memory>
using std::cout;
std::shared_ptr<Person> Person::GetPerson(std::string name, int age) {
if (age < 18) return std::make_shared<YoungPerson>(name, age);
return std::make_shared<Person>(name, age);
}
Person::Person(std::string name, int age) : name(name), age(age) {
if (age < 0) {
throw PersonException("negative age");
+3
View File
@@ -3,6 +3,7 @@
#ifndef Person_h
#define Person_h
#include <memory>
#include <string>
class Person {
@@ -15,6 +16,8 @@ class Person {
void setSalary(int sal);
static std::shared_ptr<Person> GetPerson(std::string name, int age);
private:
Person(const Person &);
+1 -1
View File
@@ -39,7 +39,7 @@ int main() {
throw PersonException("invalid age");
}
auto personPtr = std::make_shared<Person>(name, age);
auto personPtr = Person::GetPerson(name, age);
cout << salaryPrompt;
cin >> salary;