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



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

这是我所拥有的:

#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);
  };
}

我收到:

错误:数字常量之前需要标识符

错误:应为","或"…"在数值常数之前

这些不会在模板类中初始化的原因是什么?解决方案是什么?我知道这可能不是最有效的方法,但这是我最理解的方法。如果你想考虑另一种更好的方法,你会提供这样做的方法吗?

它与模板类无关。您可以使用成员初始值设定项列表来初始化成员变量:

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

或者默认的成员初始值设定项(从c++11开始):

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

最新更新