A
конструктор ожидает eMyEnum
. Непонятно, почему вы бы хотели, чтобы конструктор B
тоже не принимал параметр eMyEnum
. В любом случае, предполагая , что ваша цель состоит в том, чтобы передать аргумент конструктору A
как A::eOne
(в отличие от A::eMyEnum::eOne
), вы можете попробовать следующий код, который использует typedef
.
#include <iostream>
using namespace std;
class A {
public:
typedef enum { eOne, eTwo, eThree } eMyEnum;
public:
A(eMyEnum e) {
cout << "A ctor" << endl;
}
};
class B {
public:
B() : memberA(A::eOne) {
cout << "B ctor" << endl;
}
private:
A memberA;
};
int main() {
B b;
}
// output
A ctor
B ctor
Однако обратите внимание, что конструктор memberA
всегда вызывается с аргументом как A::eOne
. Вы не показали, как этот аргумент используется в конструкторе, но я предполагаю, что в вашем реальном коде он инициализирует член A
. Если член должен всегда иметь одно и то же значение, сделайте его const
и удалите параметр из конструктора.