我想有一個類,它允許訪問它的基本情況的const接口,但不是。特別是:應該將運算符const Base&()用於不可訪問的基類嗎?
class B
{};
class A : private class B
{
public:
operator const B&() { return *this; }
};
int main()
{
A a;
const B& b = a; // Should this line be an error?
}
g ++給出了無法訪問的基類錯誤。你有沒有語言專家認爲這個錯誤在C++ 11/C++ 14中是正確的?
是的,我知道我可以(而且會)只是這樣做:
int main()
{
A a;
const B& b = a.operator const B&();
}
對這種結構的另一種方法有什麼建議?
你已經有答案說明這是一個錯誤,但也想想看會發生什麼,如果它不是一個錯誤:它將意味着'const B&b = a;'具有完全不同的行爲,取決於它是否出現在'A'的'朋友'。 – hvd 2015-02-06 17:42:38
爲什麼不只是組合而不是私有繼承? – 2015-02-06 17:49:12