File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -9,6 +9,8 @@ class ElectricityReading {
99 using time_point_type = std::chrono::time_point<std::chrono::system_clock>;
1010
1111 ElectricityReading (time_point_type time, size_t reading) : time_(time), reading_(reading) {}
12+ ElectricityReading (const ElectricityReading&) = default ;
13+ ElectricityReading& operator =(const ElectricityReading&) = default ;
1214
1315 time_point_type getTime () const { return time_; }
1416
Original file line number Diff line number Diff line change 88
99class MeterReadings {
1010 public:
11- MeterReadings () {}
1211
1312 MeterReadings (std::string smartMeterId, std::list<ElectricityReading> electricityReadings)
14- : smartMeterId_(smartMeterId), electricityReadings_(electricityReadings){};
13+ : smartMeterId_(std::move(smartMeterId)), electricityReadings_(std::move(electricityReadings)) {}
14+
15+ MeterReadings (const MeterReadings&) = default ;
16+ MeterReadings& operator =(const MeterReadings&) = default ;
17+
18+ MeterReadings (MeterReadings&&) noexcept = default ;
19+ MeterReadings& operator =(MeterReadings&&) noexcept = default ;
20+
21+ ~MeterReadings () = default ;
1522
1623 std::list<ElectricityReading> getElectricityReadings () const { return electricityReadings_; }
1724
Original file line number Diff line number Diff line change @@ -25,6 +25,12 @@ class PricePlan {
2525
2626 PeakTimeMultiplier (DayOfWeek dayOfWeek, int multiplier) : dayOfWeek(dayOfWeek), multiplier(multiplier) {}
2727
28+ PeakTimeMultiplier (const PeakTimeMultiplier&) = default ;
29+ PeakTimeMultiplier& operator =(const PeakTimeMultiplier&) = default ;
30+ PeakTimeMultiplier (PeakTimeMultiplier&&) noexcept = default ;
31+ PeakTimeMultiplier& operator =(PeakTimeMultiplier&&) noexcept = default ;
32+ ~PeakTimeMultiplier () = default ;
33+
2834 DayOfWeek dayOfWeek;
2935 int multiplier;
3036 };
@@ -35,6 +41,18 @@ class PricePlan {
3541 unitRate_(unitRate),
3642 peakTimeMultipliers_(std::move(peakTimeMultipliers)) {}
3743
44+ // Copyable
45+ PricePlan (const PricePlan&) = default;
46+
47+ // Non-assignable due to const members (immutable value object)
48+ PricePlan& operator =(const PricePlan&) = delete ;
49+ PricePlan& operator =(PricePlan&&) = delete ;
50+
51+ // Movable (for vector initialization)
52+ PricePlan (PricePlan&&) noexcept = default;
53+
54+ ~PricePlan () = default ;
55+
3856 std::string getEnergySupplier () const { return energySupplier_; }
3957
4058 std::string getPlanName () const { return planName_; }
Original file line number Diff line number Diff line change @@ -13,6 +13,13 @@ class ElectricityReadingService {
1313 ElectricityReadingService (std::unordered_map<std::string, std::vector<ElectricityReading>> &meterAssociatedReadings)
1414 : meterAssociatedReadings_(meterAssociatedReadings) {}
1515
16+ ElectricityReadingService (const ElectricityReadingService&) = delete ;
17+ ElectricityReadingService& operator =(const ElectricityReadingService&) = delete ;
18+ ElectricityReadingService (ElectricityReadingService&&) = delete ;
19+ ElectricityReadingService& operator =(ElectricityReadingService&&) = delete ;
20+
21+ ~ElectricityReadingService () = default ;
22+
1623 std::optional<std::vector<ElectricityReading>> GetReading (const std::string &meterId) const {
1724 auto found = meterAssociatedReadings_.find (meterId);
1825 if (found != meterAssociatedReadings_.end ()) {
Original file line number Diff line number Diff line change 1818
1919class MeterReadingService {
2020 public:
21+ explicit MeterReadingService (std::unordered_map<std::string, std::vector<ElectricityReading>> &meterAssociatedReadings)
22+ : meterAssociatedReadings_(meterAssociatedReadings) {}
23+
24+ MeterReadingService (const MeterReadingService&) = delete ;
25+ MeterReadingService& operator =(const MeterReadingService&) = delete ;
26+
27+ MeterReadingService (MeterReadingService&&) = delete ;
28+ MeterReadingService& operator =(MeterReadingService&&) = delete ;
29+
30+ ~MeterReadingService () = default ;
31+
2132 std::optional<std::vector<ElectricityReading>> getReadings (const std::string &smartMeterId) const {
2233 std::shared_lock<std::shared_mutex> lock (mtx_);
2334 if (meterAssociatedReadings_.find (smartMeterId) == meterAssociatedReadings_.end ()) {
@@ -35,9 +46,6 @@ class MeterReadingService {
3546 electricityReadings.end ());
3647 }
3748
38- explicit MeterReadingService (std::unordered_map<std::string, std::vector<ElectricityReading>> &meterAssociatedReadings)
39- : meterAssociatedReadings_(meterAssociatedReadings) {}
40-
4149 private:
4250 mutable std::shared_mutex mtx_;
4351 std::unordered_map<std::string, std::vector<ElectricityReading>> &meterAssociatedReadings_;
Original file line number Diff line number Diff line change @@ -34,6 +34,13 @@ class PricePlanService {
3434 PricePlanService (std::vector<PricePlan> &pricePlans, MeterReadingService &meterReadingService)
3535 : pricePlans_(pricePlans), meterReadingService_(meterReadingService) {}
3636
37+ PricePlanService (const PricePlanService&) = delete ;
38+ PricePlanService& operator =(const PricePlanService&) = delete ;
39+ PricePlanService (PricePlanService&&) = delete ;
40+ PricePlanService& operator =(PricePlanService&&) = delete ;
41+
42+ ~PricePlanService () = default ;
43+
3744 private:
3845 const std::vector<PricePlan> &pricePlans_;
3946 MeterReadingService &meterReadingService_;
You can’t perform that action at this time.
0 commit comments