使用基類的私有成員,我想下面的編譯,但它並不:C++:在平等的測試
template <typename T>
struct Odp
{
public:
operator*() const
{
return m_p;
}
T* operator->() const
{
return m_p;
}
T** operator&()
{
return &m_p;
}
private:
T* m_p;
};
struct Ftw : public Odp<int>
{
bool operator==(const Ftw& rhs)
{
return m_p == rhs.m_p; // C2248 cannot access private member
}
};
有什麼辦法,使這項工作?我無法修改Odp
。
我認爲這是在代碼中的錯誤。運算符*()返回的類型未指定,並且返回語句與運算符 - >()中的相同。 – 2010-08-05 00:20:36
我開始對Odp感到無聊。你似乎以不同的方式提出同樣的問題。基本答案似乎是 - 不要創建派生類。 – 2010-08-05 00:21:16
@尼爾你是正確的1)我使用'Odp'作爲我選擇的隨機名稱和2)我在問類似的問題。問題是我不能改變這個基類,但我需要在它上定義'=='運算符,以便它可以在STL集合中使用。(或者,也許我錯誤地認爲是這個信念?) – 2010-08-05 04:40:34