我想有一个类,它允许访问它的基本情况的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