When trying to implement a pure abstract class (the equivalent of a Java interface), we should not deal with member visibility. Hence, one possible way is to declare the base class as a struct.