Вот как я понимаю проблему.Класс с именем 'some_class' (MyAlgorithm) должен иметь ссылку на шаблон (AlgorithmConsumer).Поскольку для 'some_class' требуется только один метод, самый простой способ - передать ссылку на функцию, что-то вроде этого:
#include <iostream>
#include <functional>
class MyAlgorithm
{
std::function<void()> prepare;
public:
explicit MyAlgorithm(std::function<void()> prepare)
: prepare{prepare}
{}
void do_something()
{
if (prepare)
{
prepare();
}
std::cout << "I did something\n";
}
};
template<typename T>
class AlgorithmConsumer
{
MyAlgorithm algorithm;
public:
AlgorithmConsumer()
: algorithm([this](){prepare();})
{}
void prepare()
{
std::cout << "Preparing...\n";
}
void execute()
{
algorithm.do_something();
}
};
int main()
{
AlgorithmConsumer<int> ac;
ac.execute();
return 0;
}
Надеюсь, это решит вашу проблему.