Even if list<D> and FindD are A's protected members, B can't call FindD on C's object.