Modernes C++ programmieren

Okt 20, 2024

lst-0008-book.cpp

// https://godbolt.org/z/zqKvMedz7 (full example)
class Date;                         // forward declaration
class Year : public Value {
public:
    explicit Year(int v) : Value{v, 4} {}
    Date easter() const;            // declare new method
};
// Declare Month, Day, and Date here. Then:
Date Year::easter() const {         // define new method
    const int y = value_;
    int a = value_/100*1483 - value_/400*2225 + 2613;
    int b = (value_%19*3510 + a/25*319)/330%29;
    b = 148 - b - (value_*5/4 + a - b)%7;
    return Date{Year{value_}, Month{b/31}, Day{b%31 + 1}};
}
int main() {
    using std::cout;
    Year year{2025};
    cout << year.easter() << "\n";  // Output: 2025-04-20
}