我正在尝试使用protected
继承来隐藏C风格的struct
成员。
通过执行此操作,我的派生class
现在能够访问struct
中的所有内容,同时将其与程序的其余部分隐藏,但它有一个成本:
编译器不再允许我从这个派生的class
隐式转换为基本的C风格struct
。
因此,要再次启用此功能,我在派生的public
中添加了operator
转化class
。但是这里出现了奇怪的事情:
operator
标记为explicit
:编译器开始说" illigal storage class"在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);
}
};