У меня есть основной поток, который выполняет некоторую работу, и он асинхронно делегирует другой поток, чтобы отправить некоторые данные другому процессу.
Я использовал обобщенную c очередь shared_ptr (T), основного потока вставляет в очередь, и второй поток извлекает данные и обрабатывает их.
Я помещаю много типов данных (то есть shared_ptr (A), shared_ptr (B)), происходящих из T.
class A : public T{};
class B : public T{};
Какой лучший (эффективный) способ узнать производный класс от типа generi c.
PS: приведение Dynami c - не лучшее решение. Производитель отправляет тип данных. Потребитель выталкивает очередь и выполняет свою работу в зависимости от переданных данных. Потребитель использует эти данные при вызове данной функции. Потребитель должен определить производный класс переданного параметра, чтобы делегировать соответствующую функцию для вызова.
void process(shared_ptr<T> ptr)
{
if (type(ptr) == A) do work using A..
if (type(ptr) == B) do staff using B..
...
}
Спасибо за вашу помощь и время.