处理不完整的类型
我有两个类:其中一个类型不完整,第二个类需要使用不完整类型。有没有办法以类似于引用外部对象的方式引用“外部类型”?
编辑:有关我的类结构的详细信息。
不幸的是我也不能使用指针。我的代码看起来像这样:
class CompleteA {
private:
friend CompleteB;
struct IncompleteA;
boost::shared_ptr<IncompleteA> data_;
};
class CompleteB {
public:
void SomeFct(CompleteA& a) {
// I need to access a member of the incomplete type
a.data_->someMember;
}
};
我可以有一个单独的标题和源文件对,但在我的情况下,这将是一个过度杀伤。不完整类型只是一个包含一个成员的结构;我用它来隐藏实现。 (但是,如果没有其他选择,我将采用单独的标题......)
关于我对朋友的使用,请忽略它并专注于我正在寻求帮助的内容。我一直在考虑是否应该在这里使用朋友,我得出的结论是,使用getter(而不是朋友)会暴露实现。
没有找到相关结果
已邀请:
3 个回复
纤洞需匪
在yourotherclass.cpp中,您实际上需要包含incompleteclass.h才能使用指针。 编辑:回复您的详细信息: 如果要隐藏实现,请为其创建一个单独的(朋友)类,并引用该类:
我想你想做这样的事情。您的实现的问题是,为了引用成员结构/类,编译器需要知道该成员和前面成员的大小。你可以将你的
转换为
的类型并取消引用;但这是一个丑陋且不安全的解决方案。
郡豪靠暖
。
我希望这些信息可以帮助您找到问题的实际解决方案!
挂帘妈乡
:提供一个私有的getter,具有一个out-line定义。