Class vs. Instance

  • + 2 comments

    What is wrong with my code?

    //mrityunjay38@gmail.com
    
    #include<bits/stdc++.h>
    using namespace std;
    
    class Person{
    public:
        int age;
        
        //constructor
        Person(int initialAge){
            bool validAge = check(initialAge);
            validAge==true?age=initialAge:age=0,cout<<"Age is not valid, setting age to 0.\n";
        };
        
        //check age validity
        bool check(int age){
            
            if(age<0)
                return false;
            
            return true;
        }
        
        void amIOld(){
            if(age<13){
                cout<<"You are young.\n";
                return;
            }
            if(age>=13 and age<18){
                cout<<"You are a teenager.\n";
                return;
            }
            
            cout<<"You are old.\n";
        }
        
        void yearPasses(){
            age++;
        }
        
    };
    int main(){
         
        int t;
        int age;
        cin >> t;
        for(int i=0; i < t; i++) {
            cin >> age;
            Person p(age);
            p.amIOld();
            for(int j=0; j < 3; j++) {
                p.yearPasses();
            }
            p.amIOld();
            
            cout << '\n';
        }
        
        return 0;
    }
    

    Technically, it is giving the right answer but the expected output doesn't repeat this -> "Age is not valid, setting age to 0." Thought it should get printed on each test case run but in the questions the expected output skips this lines after 1st run. Why?