invalid use of template-name
时间: 2023-04-25 18:00:14 浏览: 763
“invalid use of template-name”是一个编程错误,通常出现在使用模板时出现问题。这可能是由于模板名称的错误使用或模板参数的错误使用导致的。要解决此问题,需要检查代码中的模板使用,并确保正确使用模板名称和参数。
相关问题
D:\AD\mainwindow.h:22: error: invalid use of template-name 'QVector' without an argument list static QVector px; ^
这个错误提示表明在MainWindow类的mainwindow.h文件的第22行,尝试使用QVector模板名称而没有提供模板参数列表。问题可能是由于QVector没有被正确地包含在文件中,或者没有正确地声明QVector模板的实例。请检查文件中是否正确地包含了所需的头文件,并且确认QVector模板已经正确地声明和实例化。此外,也需要检查是否有其他与QVector相关的错误。
invalid use of template-name 'std::hash' without an argument list template <class T> class std::hash;这句话是什么意思
这句话是一个编译器错误信息,它表明在使用标准库中的 `hash` 模板时没有传递类型参数。在 C++11 中,标准库为自定义类型提供了默认的哈希函数实现,可以通过将类型作为模板参数传递给 `std::hash` 来使用这些实现。例如,如果要为类型 `MyType` 创建哈希函数,可以使用以下代码:
```
#include <functional>
struct MyType {
int x;
bool operator==(const MyType& other) const {
return x == other.x;
}
};
namespace std {
template <>
struct hash<MyType> {
size_t operator()(const MyType& obj) const {
return hash<int>()(obj.x);
}
};
}
```
在这个例子中,我们通过特化 `std::hash` 模板来为 `MyType` 类型提供哈希函数。注意,我们使用了 `hash<int>()` 来获取内置类型 `int` 的哈希函数实现。如果不传递类型参数,编译器就会报出上述错误信息。
阅读全文