У меня есть следующие члены смарта-класс указателя:доступ к частным memers класса в CTOR
T *local_raw_ptr;
const memory_management_type local_type;
где memory_management_type
является перечислением. Чтобы сделать неявное приведение к базовым классам я хочу реализовать этот CTOR:
template<
typename T2,
typename = typename std::enable_if<std::is_base_of<T, T2>::value>::type
>
pointer(const pointer<T2>& ptr):local_type(ptr.local_type), local_raw_ptr(ptr.local_raw_ptr) {};
но если я пытаюсь скомпилировать это я получаю эту ошибку:
pointer<Foo>::local_raw_ptr« is private within this context
, почему я не могу получить доступ к частные члены этого класса в своем собственном constuctor? И как я могу решить эту проблему?
нет в файле заголовка – Exagon
В качестве шаблона ctor пройденный «указатель» будет неактуальным классом, его частные члены не могут быть доступны в текущем классе. –
songyuanyao
Ваш вопрос непонятен. Попробуйте дать MCVE (небольшой, но ПОЛНЫЙ образец кода, который показывает ту же проблему). При догадывании функция-член от 'pointer' не сможет получить доступ к закрытым членам 'pointer ', так как 'pointer ' и 'pointer ' являются разными (не дружественными) классами, если только 'X' и 'Y' - то же самое. –
Peter