Подскажите, можно ли использовать защищенное наследование в случае:
Короткий пример кода:
#include <iostream>
#include <cstdlib>
class ISchnittstelle
{
public:
virtual std::string call_me() const =0;
virtual ~ISchnittstelle(){}
};
class Klasse: protected ISchnittstelle
{
protected:
std::string call_me() const
{
return std::string("The method is defined!!!");
}
public:
const ISchnittstelle* wunder()const
{
return this;
}
};
using namespace std;
int main(int argc, char *argv[])
{
cout << "Hello, world!" << endl;
cout << Klasse().wunder()->call_me() << endl;
return EXIT_SUCCESS;
}
//Пример у меня откомпилился и работает.
Мне надо предоставить интерфес. Проблема в том, что интерфейс сильно связывает реализацию — каждый класс, реализующий интерфейс должен иметь метод, возвращающий идентификатор класса. За уникальностью идентификаторов следит статический класс и, собственно, класс идентификатора. Перед предоставлением интерфейса нужна часть функциональности (нечто вроде возможности создать объект без идентификатора и посмотреть, нужен ли нам такой объект, если нужен, то подписать (назначить идентификатор) и предоставить, как реализатор интерфейса).
Огромное спасибо!