== socketaddress.h == class SocketAddress { public: virtual bool isValid() = 0; virtual operator struct sockaddr *() = 0; virtual operator socklen_t() = 0; virtual ~SocketAddress() {} SocketAddress() {} }; == ipv4address.h == class IPv4Address : public SocketAddress { public: IPv4Address(char* addr, char* port); IPv4Address(uint32_t addr, uint16_t port); IPv4Address(char* port); IPv4Address(uint16_t port); IPv4Address(); ~IPv4Address(); operator struct sockaddr * (); operator socklen_t(); bool isValid(); private: struct sockaddr_in m_addr; };