Создать список типов и получить доступ к статическому члену каждого типа? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть несколько дочерних классов, у всех из которых есть статическое поле type_id. То, что я пытаюсь сделать, - это сохранить список типов (который, исходя из поиска, я знаю, что это деликатная тема), а затем получить доступ к type_id типов в моем списке типов. Вот пример

// Example program
#include <iostream>
#include <tuple>

struct base_type
{
    static const uint64_t type_id = 0;
};

struct A : public base_type
{
    static const uint64_t type_id = 1;
};

struct B : public base_type
{
    static const uint64_t type_id = 2;
};

struct C : public base_type
{
    static const uint64_t type_id = 3;
};


template <class... Args>
struct type_list
{
    template <std::size_t N>
    using type = typename std::tuple_element<N, std::tuple<Args...>>::type;
};

int main()
{
  using my_types = type_list<base_type, A, B, C>;
  std::cout << my_types::type<1>.type_id << std::endl;
}

А потом, надеюсь, это распечатает 1. Однако, если вы попытаетесь скомпилировать это, это не сработает. Есть ли способ добиться чего-то подобного?


Редактировать: решение было настолько простым, что мне стыдно. Просто нужно my_types::type<1>::type_id вместо my_types::type<1>.type_id

1 Ответ

0 голосов
/ 11 мая 2018

Доступ статического члена от типа использует :: не .:

my_types::type<1>::type_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...