Наследование конструктора с одноименными классами - PullRequest
1 голос
/ 08 ноября 2019

Я хочу наследовать конструктор базового класса, но не компилировать. Как я могу решить эту проблему без изменения имени класса?

class MyClass
{
public:
    class A
    {

    };
};

class MyClass2 : MyClass
{
public:
    class A : MyClass::A
    {
        //error: expected nested-name-specifier before ‘namespace’
        using (MyClass::A)::(MyClass::A);
    };
};

Ответы [ 2 ]

2 голосов
/ 08 ноября 2019
using MyClass::A::A;

Конструктор ссылается с помощью квалифицированного имени на базовый класс, из которого он должен быть импортирован, т.е. MyClass::A, а затем снова имя класса для ссылки на конструктор, но только имя класса, а неквалифицированное имя, то есть A.

1 голос
/ 08 ноября 2019

Использует ли MyClass::A::A; то, что вы хотите?

Если вы хотите использовать method() из класса MyClass::A, вы должны написать using MyClass::A::method;. В вашем случае method() это конструктор с именем A().

...