C++ C++;-模板&x2B';使用';子句-参数不匹配错误

C++ C++;-模板&x2B';使用';子句-参数不匹配错误,c++,templates,compiler-errors,typedef,using,C++,Templates,Compiler Errors,Typedef,Using,我试图使用一个模板和两个typedef,但我知道唯一的方法是插入一个像这样的“using”子句: template<typename T> using Car = std::pair<T, T>; using SparseMatrix = std::vector< Car >; 模板 使用Car=std::pair; 使用SparseMatrix=std::vector; 问题是gcc给了我以下错误: error: type/value mismatch

我试图使用一个模板和两个typedef,但我知道唯一的方法是插入一个像这样的“using”子句:

template<typename T>
using Car = std::pair<T, T>;
using SparseMatrix = std::vector< Car >;
模板
使用Car=std::pair;
使用SparseMatrix=std::vector
问题是gcc给了我以下错误:

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Alloc> class std::vector’
错误:“模板类std::vector”的模板参数列表中参数1的类型/值不匹配

我认为问题在于,由于“使用”条款,汽车不是一种类型。如何解析?

Car
是一个别名模板,因此需要在
SparseMatrix
中获取模板参数并将其转发到:

template <typename T>
using SparseMatrix = std::vector<Car<T>>;
模板
使用SparseMatrix=std::vector;

Car
是一个别名模板,因此您需要在
SparseMatrix
中获取模板参数并将其转发到:

template <typename T>
using SparseMatrix = std::vector<Car<T>>;
模板
使用SparseMatrix=std::vector;

所以它是使用Car=std::pair的
模板;使用SparseMatrix=std::vector的模板;模板类DataHandler{…}
使用它们的正确方法?但是为什么现在,当我在另一个类中声明使用模板的对象(DataHandler)时,我会出现此错误<代码>错误:没有参数列表的模板名称“DataHandler”的使用无效,因为
DataHandler
是一个模板类。您需要使用
DataHandler
(尽管在某些上下文中可以省略参数)告诉我
错误:“T”未在此范围内声明
@rh0x,这是因为您需要一个有效的模板参数。我建议大家阅读一下关于模板的内容,可能会就出现的任何问题问一个新问题;使用SparseMatrix=std::vector的模板;模板类DataHandler{…}使用它们的正确方法?但是为什么现在,当我在另一个类中声明使用模板的对象(DataHandler)时,我会出现此错误<代码>错误:没有参数列表的模板名称“DataHandler”的使用无效,因为
DataHandler
是一个模板类。您需要使用
DataHandler
(尽管在某些上下文中可以省略参数)告诉我
错误:“T”未在此范围内声明
@rh0x,这是因为您需要一个有效的模板参数。我建议大家阅读一下模板,如果有任何问题,可以问一个新问题。