c ++创建通用点模板

时间:2014-03-22 18:05:03

标签: c++ templates

开始我对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

1 个答案:

答案 0 :(得分:0)

您指的是未声明的类成员coords

只需将声明list<float> coords;添加到您的班级。

要解决第二个问题,您需要提供sqrt声明。为此,您需要#include <cmath>,这将提供::std::sqrt。请务必添加using ::std::sqrt或类似语句,以确保其被称为sqrt