1
У меня этот класс, но я получаю сообщение об ошибке только в случае BOOST.Ошибка Division_Euclidean_space.h: 'vertex_t' не является типом
template<typename T>
class Division_Euclidean_space {
public:
typedef T FT;
#ifdef RKD_WITH_BOOST
struct Vertex{ std::vector<FT> v;};
typedef struct Vertex Vertex;
typedef boost::adjacency_list<boost::listS, boost::vecS, boost::directedS, Vertex > Graph;
typename boost::graph_traits<Graph>::vertex_descriptor vertex_t;
#endif
#ifdef RKD_WITH_BOOST
void insert(Graph& g, vertex_t& v) {
for(int i = 0; i < g[v].v.size(); ++i)
p.push_back(g[v].v[i]);
}
#endif
...
Я на самом деле получаю много ошибок, но я считаю, что если я это исправить, я буду в порядке, то
Division_Euclidean_space.h:102:25: error: ‘vertex_t’ is not a type
Джарод, я думаю, что это решает проблему! Я нашел это заявление: «typedef - объявить тип, typename используется для получения типа шаблонов» на моем пути при понимании «typename»! Вы согласны с этим или у вас есть что-то «лучше»? – gsamaras
Я согласен с ним с небольшой модификацией: 'typedef' - объявить тип * псевдонима *. Оба равны, это не дополнительный тип. Я имею в виду 'std :: is_same :: value' - true для' typedef type1 type2; '. –
Jarod42
Спасибо Jarod. У меня есть -1, и я не могу удалить вопрос, потому что на него ответили сейчас. Что мне делать? – gsamaras