参考网址:C++ template typedef
graph_tool中使用结构体
struct apply { typedef typename boost::graph_traits::vertex_iterator type; }; template static std::pair ::type, typename apply ::type> range(Graph& g) { return edges(g); }
结构体有一些参数是固定的,这样可以少写几个参数,比如说下面的例子,最后用Vector<3>::type代替Matrix1
使用typedef定义一个Vector,相当于一个(N,1)大小的矩阵。
typedef MatrixVector ;
上面这个编译不通过。
要使用参考网址里面的这个:
首先定义一个Matrix1类。
templateusing Vector = Matrix ;
然后再定义一个结构体模板Vector:
templatestruct Vector { typedef Matrix type; };
完整代码:
#include//#include //typedef Matrix Vector ; template class Matrix1 { int a[N][M]={0}; // 构造函数可以不要,编译能够通过。 public: // 注意声明函数为公共函数!!!否则不可见。 void init(int A[N][M]){ for(int i=0;i struct Vector { typedef Matrix1 type; }; int main(){ // Vector<3>::type a; int A[3][1]={{1},{2},{3}}; int B[3][1]={1,2,3}; a.init(B); for(int i=0;i<3;i++){ std::cout<< 2-i <<" "< 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)