在模板化类中初始化私有成员变量向量

时间:2016-04-03 03:00:10

标签: c++ matrix vector graph private

我目前正在开发一个模板图表类,它使用两个向量来创建邻接矩阵。我可以让它在模板类之外工作,但我似乎无法初始化向量。

这就是我所拥有的:

#include <stdexcept>
#include <vector>
#include <list>
#include <string>

using namespace std;

namespace GraphNameSpace
{
  template <class T>
  class Graph
  {
  private:
    vector<int> colOfRow(100);
    vector<vector<int> > matrix(100);
  };
}

我收到:

错误:数字常量之前的预期标识符

错误:在数字常量

之前预期','或'...'

那些不会在模板类中初始化的原因是什么,以及解决方案是什么? 我知道这可能不是最有效的方式,但这是我最了解的方式。如果您考虑采用另一种方式做得更好,您会提供实现这一目标的方式吗?

1 个答案:

答案 0 :(得分:4)

它与模板类无关。您可以使用member initializer list初始化成员变量:

namespace GraphNameSpace
{
  template <class T>
  class Graph
  {
  private:
    vector<int> colOfRow;
    vector<vector<int> > matrix;
  public:
    Graph() : colOfRow(100), matrix(100) {}
  };
}

default member initializer(自c ++ 11起):

namespace GraphNameSpace
{
  template <class T>
  class Graph
  {
  private:
    vector<int> colOfRow{100};
    vector<vector<int> > matrix{100};
  };
}