初始化模板类中的私有成员变量向量
问题描述:
我目前正在研究利用两个向量创建邻接矩阵的模板图类。我可以在模板类之外工作,但似乎无法初始化矢量。初始化模板类中的私有成员变量向量
以下是我有:
#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);
};
}
我收到:
错误:数字常量之前预期的 '' 或 '...':之前的数字常量
错误的期望标识符
那些不会在模板类中进行初始化的原因是什么?解决方案是什么? 我知道这可能不是最有效的方法,但这是我最理解的方式。如果你会考虑另一种更好的方法,你会提供你这样做的方式吗?
答
它与模板类无关。你可以使用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};
};
}
+0
值得一编的是,它不能初始化矢量如何以及在哪里尝试初始化矢量的点。 – user4581301
你需要修改你的问题,包括[MCVE。您的问题不符合“完整”和“可验证”部分的要求。 –
大卫你好。删除了我帮助过的问题后,我浏览了您的个人资料。我注意到您已经提出了其他几个问题并且没有接受任何答案。为了个人利益来到这里是不公平的,然后不给那些帮助你的人,或者留下一些能够帮助未来遇到你的问题的人。我们是一个社区,如果你想成为它的一部分,你应该贡献一下。 – paddy