Re[2]: Как можно отказаться от шаблонов?
От: night beast СССР  
Дата: 19.09.17 16:43
Оценка: +2
Здравствуйте, Alexander G, Вы писали:

SaZ>>Есть несколько структур, которые наследуются от базовой и содержат одинаковые поля. И некоторый враппер, который позволяет брать из них данные в удобном виде.

SaZ>>Хочется как-то отказаться от шаблонов, чтобы закоментированный код работал. Выносить общие переменные в базовую структуру нельзя.

AG>Чтобы код, аналогичный закомментриованному, работал, не нужно отказываться от шаблона, нужно просто скрестить статический и динамический полиморфизм во таким образом:


для данного примера можно без уника:
const MetaBase& wa = Wrap( a );
const MetaBase& wb = Wrap( b );
 
std::cout << wa.name() << "\n";
std::cout << wb.name() << "\n";
 
for ( const auto meta : { &wa, &wb } )
    std::cout << meta->name() << "\n";
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.