Я пытаюсь использовать 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);
}
};
Задача ещё не решена.