我正在尝试使用protected
继承来隐藏 C 样式的struct
成员。
通过这样做,我的派生class
现在能够访问所有内容,struct
同时从程序的其余部分隐藏它,但它有一个成本:编译器不再允许我从这个派生隐式class
转换为基本 C-style struct
。
因此,为了再次启用该功能,我在派生public
的. 但奇怪的事情来了:operator
class
- 首先,我无法标记
operator
as :编译器开始在定义中的类型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);
}
};