#include <iostream>
using namespace std;
class IParent
{
public:
virtual void foo( ) = 0;
};
class Root : private IParent {
private:
virtual void foo( ) override { cout << "foo!"; }
};
class Test {
public:
Test( IParent& p ) : m_parent(p) {
m_parent.foo(); // Wieso kann ich hier eine private Methode von Root aufrufen?
}
private:
IParent& m_parent;
};
int main()
{
//Ausgeführter Code:
Root root;
Test t( root );
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgSVBhcmVudAp7CnB1YmxpYzoKCiAgICB2aXJ0dWFsIHZvaWQgZm9vKCAgKSA9IDA7Cn07CgpjbGFzcyAgUm9vdCA6IHByaXZhdGUgSVBhcmVudCB7CnByaXZhdGU6CiB2aXJ0dWFsIHZvaWQgZm9vKCApIG92ZXJyaWRlIHsgY291dCA8PCAiZm9vISI7IH0KfTsKCmNsYXNzIFRlc3QgewpwdWJsaWM6CiBUZXN0KCBJUGFyZW50JiBwICkgOiBtX3BhcmVudChwKSB7CiAgICAgbV9wYXJlbnQuZm9vKCk7IC8vIFdpZXNvIGthbm4gaWNoIGhpZXIgZWluZSBwcml2YXRlIE1ldGhvZGUgdm9uIFJvb3QgYXVmcnVmZW4/CiAgfQpwcml2YXRlOgogIElQYXJlbnQmIG1fcGFyZW50Owp9OwoKaW50IG1haW4oKQp7CiAgLy9BdXNnZWbDvGhydGVyIENvZGU6CiAgUm9vdCByb290OwogIFRlc3QgdCggcm9vdCApOwp9