свободная функция:
struct AbstractInterface
{
// pure-virtual methods
};
template<typename T>
void passThrough(AbstractInterface* dst, T val)
{
// ...
}
Можно ли как-нибудь в реализацию AbstractInterface передать реальный тип объекта val, т.е. T?
Содержимое как AbstractInterface, так и тело passThrough можно свободно менять
Или наоборот, внутрь контекста функции "вытянуть" run-time тип объекта под dst
можно, если у тебя там есть методы, которые будут принимать конкретные T, для которых у тебя инстанциируется твой passThrough
Вообще, в ООП выделять тип объекта в виде переменной - это антипаттерн. Надо диспетчеризацию делать по динамическому типу за счёт виртуальных методов .
Ну и похоже шаблонный passThrough тут излишне делать, это ему не нужно
А, тут тебе нужна множественная диспетчеризация, в с++ реализуется как паттерн Visitor
Ты тут просто не передашь этот T никуда, у него должен быть общий предок для этого, а ты пишешь, что Т - произвольный. Тогда ты его только через void* можешь передать, а это сам знаешь неверно , что...
Обсуждают сегодня