Защищенные операторы наследования, преобразования и преобразования

Я пытаюсь использовать protected наследование, чтобы скрыть C-стиль struct члены.

Делая это, мой вывод class теперь может получить доступ ко всему от struct скрывая это от остальной части программы, но это имеет цену:
компилятор не позволит мне больше неявное приведение из этого производного class в базовый C-стиль struct,

Итак, чтобы снова включить функцию, я добавил public преобразование operator в производном class, Но вот идут странные вещи:

  • во-первых, я не мог пометить operator как explicit: компилятор начинает говорить «класс хранилища» на struct введите в operator определение.
  • без explicit ключевое слово, компилятор все еще распознает преобразование как недоступное в точке, где оно вызывается (я использовал static_cast<T>()).

Любая идея?
(Я использую Visual Studio 2010)

Пример кода:

struct DataFromC
{
int a, b, c;
};

class Data : protected DataFromC
{
public:

explicit operator DataFromC()
{
return (DataFromC)(*this);
}
};

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]