Skip to content

Commit 87c8150

Browse files
committed
improve constructor and destructor declarations
1 parent 49171c7 commit 87c8150

6 files changed

Lines changed: 54 additions & 5 deletions

File tree

rest/domain/ElectricityReading.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff 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

rest/domain/MeterReadings.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,17 @@
88

99
class 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

rest/domain/PricePlan.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff 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_; }

rest/service/ElectricityReadingService.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff 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()) {

rest/service/MeterReadingService.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@
1818

1919
class 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_;

rest/service/PricePlanService.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff 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_;

0 commit comments

Comments
 (0)