2016-04-03 144 views
1

我目前正在研究利用两个向量创建邻接矩阵的模板图类。我可以在模板类之外工作,但似乎无法初始化矢量。初始化模板类中的私有成员变量向量

以下是我有:

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

我收到:

错误:数字常量之前预期的 '' 或 '...':之前的数字常量

错误的期望标识符

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

+0

你需要修改你的问题,包括[MCVE。您的问题不符合“完整”和“可验证”部分的要求。 –

+0

大卫你好。删除了我帮助过的问题后,我浏览了您的个人资料。我注意到您已经提出了其他几个问题并且没有接受任何答案。为了个人利益来到这里是不公平的,然后不给那些帮助你的人,或者留下一些能够帮助未来遇到你的问题的人。我们是一个社区,如果你想成为它的一部分,你应该贡献一下。 – paddy

回答

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}; 
    }; 
} 
+0

值得一编的是,它不能初始化矢量如何以及在哪里尝试初始化矢量的点。 – user4581301