c++;创建通用点模板 我开始对C++很陌生,所以可能只是一个愚蠢的语法错误。我正在尝试创建一个头文件,我想在其中为点创建模板,以便该点可以有任意数量的坐标。类似点有x和y坐标。点有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 使用std::ostream; 使用std::list; 模板 类点{ 公众: 点()=默认值; 点(列表坐标){ 这->坐标=坐标; } 浮动距离(点p){ 浮点数s=0; auto it1=coords.begin(); 自动it2=p.coords.begin(); 而((it)!=coords.end()){ s+=(*it1-*it2)*(*it1-*it2); it1++; it2++; } 返回sqrt; } }; #恩迪夫

c++;创建通用点模板 我开始对C++很陌生,所以可能只是一个愚蠢的语法错误。我正在尝试创建一个头文件,我想在其中为点创建模板,以便该点可以有任意数量的坐标。类似点有x和y坐标。点有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 使用std::ostream; 使用std::list; 模板 类点{ 公众: 点()=默认值; 点(列表坐标){ 这->坐标=坐标; } 浮动距离(点p){ 浮点数s=0; auto it1=coords.begin(); 自动it2=p.coords.begin(); 而((it)!=coords.end()){ s+=(*it1-*it2)*(*it1-*it2); it1++; it2++; } 返回sqrt; } }; #恩迪夫,c++,templates,C++,Templates,您指的是未声明的类成员coords 只需添加声明列表坐标到你的班级 要解决第二个问题,需要使用sqrt声明。为此,您需要#包括,这将提供。请记住:使用“:代码:>:Std::Sqrt< /Calp>或类似语句,以确保它被称为代码> Sqrt .< /P>请始终给出编译器消息而不是只说它不编译。我不确定它是否在C++ >代码>点()=默认值;代码>哦,12个不同的点类!我们需要的是一个通用点类然后是13。定义了坐标后,现在出现了错误:include/point.h:38:16:error:sqrt

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

只需添加声明
列表坐标到你的班级


要解决第二个问题,需要使用
sqrt
声明。为此,您需要
#包括
,这将提供。请记住:使用“:代码:>:Std::Sqrt< /Calp>或类似语句,以确保它被称为代码> Sqrt .< /P>请始终给出编译器消息而不是只说它不编译。我不确定它是否在C++ >代码>点()=默认值;代码>哦,12个不同的点类!我们需要的是一个通用点类然后是13。定义了坐标后,现在出现了错误:include/point.h:38:16:error:sqrtä没有依赖于模板参数的参数,因此必须有一个'sqrt'声明可用[-fppermissive]return sqrt(s)@干杯,谢谢。-阿尔夫标准的问题是不够。
list coords
不会将点坐标数限制为
n
。这也是我第一次使用stackoverflow。我将在将来发布确切的消息。:)是的,你是对的问题是coords没有定义。但添加列表;仍然说coords没有定义。