Помогите, пожалуйста, разобраться как правильно унаследовать интерфейс от другого класса к интерфейсу нового класса, чтоб новый интерфейс знал функции и родителя и потомка, но компилятор не выдавал бы ошибок "Нельзя вызвать конструктор абстрактного класса Server" или ошибок типа "У класса нет такого метода".
Пробовал создать некий новый интерфейс class IMainServer: public IServer, public ITcpSocket но тогда go() выдаёт ошибки о невозможности конвертации Server к нему.
#include <memory>
#include <iostream>
using namespace std;
/* Interfaces */
class ITcpSocket
{
public:
virtual void start(void) = 0;
};
class IServer: public ITcpSocket
{
public:
virtual void load(void) = 0;
};
/* Classes */
class TcpSocket: public ITcpSocket
{
public:
void start(void)
{
cout << "start" << endl;
}
};
class Server: public IServer, public TcpSocket
{
public:
void load(void)
{
cout << "load" << endl;
}
};
void go(shared_ptr<IServer> server)
{
server->start();
server->load();
}
int main()
{
auto server = make_shared<Server>();
go(server);
return 0;
}