delegating into private parts
Posted
by FredOverflow
on Stack Overflow
See other posts from Stack Overflow
or by FredOverflow
Published on 2010-06-01T18:21:50Z
Indexed on
2010/06/01
18:23 UTC
Read the original article
Hit count: 165
Sometimes, C++'s notion of privacy just baffles me :-)
class Foo
{
struct Bar;
Bar* p;
public:
Bar* operator->() const
{
return p;
}
};
struct Foo::Bar
{
void baz()
{
std::cout << "inside baz\n";
}
};
int main()
{
Foo::Bar b; // error: 'struct Foo::Bar' is private within this context
Foo f;
f->baz(); // fine
}
Since Foo::Bar
is private
, I cannot declare b
in main
. Yet I can call methods from Foo::Bar
just fine. Why the hell is this allowed? Was that an accident or by design?
© Stack Overflow or respective owner