这个C++模板代码出错的原因是什么?
此代码导致编译时错误:这个C++模板代码出错的原因是什么?,c++,C++,此代码导致编译时错误: #include <iostream> #include <vector> #include <cmath> template <unsigned short n> class Vector { public: std::vector<float> coords; Vector(); Vector(std::vector<float> crd
#include <iostream>
#include <vector>
#include <cmath>
template <unsigned short n>
class Vector {
public:
std::vector<float> coords;
Vector();
Vector(std::vector<float> crds);
float distanceFrom(Vector<n> v);
template <unsigned short m>
friend std::ostream& operator <<(std::ostream& out, const Vector<m>& v);
};
template <unsigned short n>
Vector<n>(vector<float> crds) { // HERE IS ERRRO
}
编译错误:
C:\CodeBlocks\kool\praks3\vector.h|29|error: expected ')' before '<' token|
||=== Build finished: 1 errors, 0 warnings ===|
您可能缺少向量中的std::prefix。您可能缺少向量中的std::prefix 编辑:正如其他人提到的,如果您没有使用名称空间std;您还需要std::vector
编辑:正如其他人提到的,如果您没有使用名称空间std;您还需要std::vectorvector::Vectorconstructor参数
您只是忘记了定义构造函数的作用域Vector::Vectorconstructor参数
您只是忘记了定义构造函数的范围以下是您应该如何在类之外定义构造函数:
template <unsigned short n>
Vector<n>::Vector(std::vector<float> crds) {
//also notice this ^^^^
}
下面是您应该如何在类外定义构造函数:
template <unsigned short n>
Vector<n>::Vector(std::vector<float> crds) {
//also notice this ^^^^
}
应该是这个吗
template <> Vector<unsigned short>::Vector(Vector<float> crds)
{
// BLAH
}
在我看来,你对模板专业化感到困惑 应该是这样吗
template <> Vector<unsigned short>::Vector(Vector<float> crds)
{
// BLAH
}
在我看来,你对模板专业化感到困惑 也许你应该少写代码多读,直到你掌握了基础知识?掌握基础知识的最好方法不仅仅是阅读,还要尝试在一些简单的例子中使用它。一旦你克服了这些错误,你就会更好地记住这些结构,而且几乎不会再犯同样的错误两次。也许你应该少写代码,多阅读,直到你掌握了基础知识。掌握基础知识的最好方法不仅是阅读,而且还要尝试在一些简单的例子中使用它。一旦你克服了这些错误,你就会更好地记住这些结构,并且几乎不会犯两次同样的错误。是的,他会的。编译器无法识别向量字。@Erik:一种可能是代码中的各种错误意味着它可能是多个问题中的任何一个,唉:这可能也是一个问题,但编译器的错误消息是关于另一个问题的。是的,他会的。编译器无法识别向量字。@Erik:一种可能是代码中的各种错误意味着它可能是多个问题中的任何一个,唉:这可能也是一个问题,但编译器的错误消息是关于另一个问题的。我还将在向量之前包含std::prefix,以便与类声明保持一致。这样可能不行,我们不知道他是否在某处有using指令。我还将在vector之前包含std::prefix,只是为了与类声明保持一致。这样可能不行,我们不知道他是否在某处有使用指令。。额外的向量…我完全忘了,谢谢,当然。。额外的向量…我完全忘了,谢谢