Sure, but CWallet isn't outside, as it inherits from public Chain::Notifications, an "is a" relationship?
private also forbids derived classes from access. This should be explained in any resource that explains C++ access modifiers.
You can also see with a simple diff that this can't be private:
wallet/wallet.cpp:2998:41: error: 'hasAssumedValidChain' is a private member of 'interfaces::Chain'
if (chain.havePruned() || chain.hasAssumedValidChain()) {
^
./interfaces/chain.h:97:18: note: implicitly declared private here
virtual bool hasAssumedValidChain() = 0;
diff --git a/src/interfaces/chain.h b/src/interfaces/chain.h
index c2babaaa46..11bca0706a 100644
--- a/src/interfaces/chain.h
+++ b/src/interfaces/chain.h
@@ -95,2 +95,4 @@ class Chain
{
+ //! Return true if an assumed-valid chain is in use.
+ virtual bool hasAssumedValidChain() = 0;
public:
@@ -285,5 +287,2 @@ public:
virtual void requestMempoolTransactions(Notifications& notifications) = 0;
-
- //! Return true if an assumed-valid chain is in use.
- virtual bool hasAssumedValidChain() = 0;
};