處理我有兩類:其中一人有一個不完整的類型,第二個需要使用不完全類型。有沒有什麼辦法像引用外部對象那樣引用「外部類型」?使用不完全類型
編輯:我的類的結構詳細信息。
不幸的是我也不能使用指針。我的代碼看起來是這樣的:
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(而不是朋友)會暴露實現的結論。
這是一個很廣泛的問題。您可能想要發佈您想要做的事情的示例,然後有人可能會爲您提供解決方案。 – ltc 2011-04-02 08:23:16
由於CompleteB是一位朋友,我不明白爲什麼你不在CompleteA中使用私有getter(它可以在別的地方實現),就像@Matthieu M.建議的那樣。這裏絕對沒有問題,帶有不完整類型的pimpl習慣用法很常見,這是您跨入pimpl類實現的方式。 – 2011-04-02 23:21:21