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'是聲明*別名*類型。兩者都是平等的,它不是一個額外的類型。我的意思是'typedef type1 type2;'的std :: is_same :: value'是真的。 –
Jarod42
謝謝Jarod。我有一個-1,我不能刪除這個問題,因爲它現在被回答。我該怎麼辦? – gsamaras