Search code examples
c++constructorg++declarationmember-variables

Declaring a member variable that takes a constructor parameter


 // In A.h
 class A
 {
  public:
    enum eMyEnum{ eOne, eTwo, eThree };
  public:
    A(eMyEnum e);
 }

 // In B.h
 #include "A.h"
 class B
 {
    B();
    private:
       A memberA;
 }

 // In B.cpp
#include "B.h"
 B::B(void) : memberA(A::eOne)
 {}

The declaration to 'memberA' gives me a compile error using the g++ compiler: error: 'A::eOne' is not a type

How can I overcome this? Do I simply need to create a default constructor that takes no parameters?


Solution

  • It sounds like you are trying to initialise a member variable. You could do something like:

    class B
    {
    public:
        B() : memberA(A::eOne) {}  // Initializer list in constructor
    private:
        A memberA;
    };