user19361: I am trying to set the status of an object from a private enum and I'm not sure how to get the private member to the public version in the constructor, and I'm pretty sure I should not be using byte in the constructor when it's an enum.
Also, I'm not sure if I should even have the values of the enum inside the header at all. Here is my code:
.h
class CandleRack
{
  public:

    CandleRack(byte candleRackStatus);
    ~CandleRack();
    void begin();
    void pushButton();
    void selectRandomCandle();
    void turnOnCandle(byte candlePosition);
    void burnCandlesForMs();
    void fadeOutCandle(byte candlePosition);


  private:
    Bounce *_debouncePushButton;
    byte _pushButtonPin; 
    enum _candleRackStatus
    {
      inactive = 0,
      candlesOn = 1,
      rewardAnimation = 2,
      tweetArrived = 3,
      partyMode = 4,      
    };
    byte _candlePosition;
    byte _candleStatus[NUM_LEDS];
    elapsedMillis _candleTimeElapsed[NUM_LEDS];
    unsigned int _candleOnForMs;
};

.cpp
CandleRack::CandleRack(byte candleRackStatus)
{
  _candleRackStatus = candleRackStatus;
  _debouncePushButton = NULL;
}

in the sketch
CandleRack MyCandleRack(0);

error:
error: expected unqualified-id before '=' token
_candleRackStatus = candleRackStatus;

Thanks!

user19016: I see two separate issues here. 
First of all your enum isn't available as a variable. 
By declaring it as a private type within your class the enum can't be used outside of that class.
This forces a user of that class to handle unintended calls like (attention, bug):
CandleRack(255);

which can make code harder to read (and debugging more difficult, since it wouldn't be detected by the compiler).
Second of all you try to directly assign a byte value to an enum type. This will be rejected by the compiler and/or cause runtime errors later (depending on compiler settings).
I recommend that you declare the enum type so that it is accessible directly via the header file:
.h
enum CandleRackStatus {
    inactive = 0,
    candlesOn = 1,
    rewardAnimation = 2,
    tweetArrived = 3,
    partyMode = 4,      
};

class CandleRack
{
  public:

    CandleRack(CandleRackStatus candleRackStatus);
    ~CandleRack();
    void begin();
    void pushButton();
    void selectRandomCandle();
    void turnOnCandle(byte candlePosition);
    void burnCandlesForMs();
    void fadeOutCandle(byte candlePosition);

  private:
    Bounce *_debouncePushButton;
    CandleRackStatus _candleRackStatus;
    byte _pushButtonPin; 
    byte _candlePosition;
    byte _candleStatus[NUM_LEDS];
    elapsedMillis _candleTimeElapsed[NUM_LEDS];
    unsigned int _candleOnForMs;
};

Now you can instantiate your class while using the correct enum type as the parameter.
.ino
CandleRack MyCandleRack(CandleRackStatus::inactive);

Within your implementation you can now directly store the constructor parameter in the private variable, the compiler will make sure it's always of the correct enum type:
.cpp
CandleRack::CandleRack(CandleRackStatus candleRackStatus) {
    _candleRackStatus = candleRackStatus;
    // rest of your initialisiation goes here
}

As an added bonus, there's the possibility to use a couple of C++ language features that will make your implementation easier:

a default parameter value
an initializer (list)

.h
class 
{
  public:
    CandleRack(CandleRackStatus candleRackStatus = CandleRackStatus::inactive);
    // [...]
}

.cpp
CandleRack::CandleRack(CandleRackStatus candleRackStatus) : _candleRackStatus(candleRackStatus) {
    // rest of your initializiation goes here
}


19361: <p>I am trying to set the status of an object from a private enum and I'm not sure how to get the private member to the public version in the constructor, and I'm pretty sure I should not be using <code>byte</code> in the constructor when it's an enum.</p>

<p>Also, I'm not sure if I should even have the values of the enum inside the header at all. Here is my code:</p>

<p>.h</p>

<pre><code>class CandleRack
{
  public:

    CandleRack(byte candleRackStatus);
    ~CandleRack();
    void begin();
    void pushButton();
    void selectRandomCandle();
    void turnOnCandle(byte candlePosition);
    void burnCandlesForMs();
    void fadeOutCandle(byte candlePosition);


  private:
    Bounce *_debouncePushButton;
    byte _pushButtonPin; 
    enum _candleRackStatus
    {
      inactive = 0,
      candlesOn = 1,
      rewardAnimation = 2,
      tweetArrived = 3,
      partyMode = 4,      
    };
    byte _candlePosition;
    byte _candleStatus[NUM_LEDS];
    elapsedMillis _candleTimeElapsed[NUM_LEDS];
    unsigned int _candleOnForMs;
};
</code></pre>

<p>.cpp</p>

<pre><code>CandleRack::CandleRack(byte candleRackStatus)
{
  _candleRackStatus = candleRackStatus;
  _debouncePushButton = NULL;
}
</code></pre>

<p>in the sketch</p>

<pre><code>CandleRack MyCandleRack(0);
</code></pre>

<p>error:</p>

<pre><code>error: expected unqualified-id before '=' token
_candleRackStatus = candleRackStatus;
</code></pre>

<p>Thanks!</p>
 19016: <p>I see two separate issues here. </p>

<p>First of all your enum isn't available as a variable. 
By declaring it as a private type within your class the enum can't be used outside of that class.</p>

<p>This forces a user of that class to handle unintended calls like (attention, <em>bug</em>):</p>

<pre><code>CandleRack(255);
</code></pre>

<p>which can make code harder to read (and debugging more difficult, since it wouldn't be detected by the compiler).</p>

<p>Second of all you try to directly assign a byte <em>value</em> to an enum <em>type</em>. This will be rejected by the compiler and/or cause runtime errors later (depending on compiler settings).</p>

<p>I recommend that you declare the enum type so that it is accessible directly via the header file:</p>

<p>.h</p>

<pre><code>enum CandleRackStatus {
    inactive = 0,
    candlesOn = 1,
    rewardAnimation = 2,
    tweetArrived = 3,
    partyMode = 4,      
};

class CandleRack
{
  public:

    CandleRack(CandleRackStatus candleRackStatus);
    ~CandleRack();
    void begin();
    void pushButton();
    void selectRandomCandle();
    void turnOnCandle(byte candlePosition);
    void burnCandlesForMs();
    void fadeOutCandle(byte candlePosition);

  private:
    Bounce *_debouncePushButton;
    CandleRackStatus _candleRackStatus;
    byte _pushButtonPin; 
    byte _candlePosition;
    byte _candleStatus[NUM_LEDS];
    elapsedMillis _candleTimeElapsed[NUM_LEDS];
    unsigned int _candleOnForMs;
};
</code></pre>

<p>Now you can instantiate your class while using the correct enum type as the parameter.</p>

<p>.ino</p>

<pre><code>CandleRack MyCandleRack(CandleRackStatus::inactive);
</code></pre>

<p>Within your implementation you can now directly store the constructor parameter in the private variable, the compiler will make sure it's always of the correct enum type:</p>

<p>.cpp</p>

<pre><code>CandleRack::CandleRack(CandleRackStatus candleRackStatus) {
    _candleRackStatus = candleRackStatus;
    // rest of your initialisiation goes here
}
</code></pre>

<p>As an added bonus, there's the possibility to use a couple of C++ language features that will make your implementation easier:</p>

<ul>
<li><a href="https://en.wikipedia.org/wiki/Default_argument#Default_arguments_in_C.2B.2B" rel="nofollow">a default parameter value</a></li>
<li><a href="https://en.wikipedia.org/wiki/Initialization_(programming)#Initializer_list" rel="nofollow">an initializer (list)</a></li>
</ul>

<p>.h</p>

<pre><code>class 
{
  public:
    CandleRack(CandleRackStatus candleRackStatus = CandleRackStatus::inactive);
    // [...]
}
</code></pre>

<p>.cpp</p>

<pre><code>CandleRack::CandleRack(CandleRackStatus candleRackStatus) : _candleRackStatus(candleRackStatus) {
    // rest of your initializiation goes here
}
</code></pre>
