C++ initialization lists for multiple variables

dukevin picture dukevin · Sep 30, 2011 · Viewed 10.8k times · Source

I'm trying to learn how to initialize lists.

I have a simple class below and trying to initialize the list of variables. The first Month(int m): month(m) works. I'm trying to do something similar below that line with more than one variable. Is this possible in that format? would I have to break away from the one liner?

class Month
{
public:
    Month(int m) : month(m) {} //this works
    Month(char first, char second, char third) : first(first){} : second(second){} : third(third){} //DOES NOT WORK
    Month();
    void outputMonthNumber(); //void function that takes no parameters
    void outputMonthLetters(); //void function that takes no parameters
private:
    int month;
    char first;
    char second;
    char third;
};

Obviously I don't have much clue how to do this, any guidance would be appreciated, thanks

Answer

Andy Thomas picture Andy Thomas · Sep 30, 2011

Try this:

  Month(char first, char second, char third) 
     : first(first), second(second), third(third) {} 

[You can do this as a single line. I've split it merely for presentation.]

The empty braces {} are the single body of the constructor, which in this case is empty.