开始我对c ++很新,所以可能只有一个愚蠢的语法错误。我正在尝试创建一个头文件,我想为点创建模板,以便该点可以有任意数量的坐标。像点< 2>会有x和y坐标。点< 3>会有x,y,z等等。当我在测试程序中使用此标头时,它无法编译。任何人都可以帮助我吗?
using std::ostream;
using std::list;
template <unsigned short n>
class Point {
public:
Point <n>() = default;
Point <n>(list<float> coords){
this-> coords=coords;
}
float distanceFrom (Point <n> p){
float s=0;
auto it1= coords.begin();
auto it2= p.coords.begin();
while ((it) != coords.end()){
s+=(*it1 -*it2)*(*it1-*it2);
it1++;
it2++;
}
return sqrt(s);
}
};
#endif
答案 0 :(得分:0)
您指的是未声明的类成员coords
。
只需将声明list<float> coords;
添加到您的班级。
要解决第二个问题,您需要提供sqrt
声明。为此,您需要#include <cmath>
,这将提供::std::sqrt
。请务必添加using ::std::sqrt
或类似语句,以确保其被称为sqrt
。