Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c++;属于非类类型错误的 首先,我要记住C++是一个完整的新手。今天我读了很多关于模板和字符串的书,但有几件事我想不出来。当我在测试类中使用point或任何其他值创建点时。我有一个错误:“v2”中的成员“tostring”请求为非类类型。。。 1.为什么我会犯这样的错误? 2.如何使Point()=默认值;使每个坐标值为0.0;就像我有一个点,它应该是(0.0),点应该是(0.0,0.0),依此类推: #ifndef POINT_H #define POINT_H #include <iostream> #include <list> #include <sstream> #include <string> using std::stringstream; #include <cmath> using namespace std; template<unsigned short n> class Point { public: list <float> coords = {0.0}; Point <n>() = default; Point <n>(list<float> coords){ this-> coords=coords; } string toString(){ string sone; ostringstream ss; sone.append("("); auto it3= coords.begin(); while ((it3) != coords.end()){ ss << (*it3); sone.append(ss.str()); ss.str(""); } sone.append(")"); return sone; } float distanceFrom (Point <n> v){ float s=0; list<float> coords; auto it1= coords.begin(); auto it2= v.coords.begin(); while ((it1) != coords.end()){ s+=(*it1 -*it2)*(*it1-*it2); it1++; it2++; } return sqrt(s); } friend std::ostream& operator <<(std::ostream& out, const Point<n>& v) { out << "("<<"Test"<<")"; return out; } }; #endif #如果不确定点(H) #定义点 #包括 #包括 #包括 #包括 使用std::stringstream; #包括 使用名称空间std; 模板 类点{ 公众: 列表坐标={0.0}; 点()=默认值; 点(列表坐标){ 这->坐标=坐标; } 字符串toString(){ 弦声; ostringstream ss; 一、追加(“”); auto it3=coords.begin(); while((it3)!=coords.end()){ ss_C++ - Fatal编程技术网 坐标=坐标; } 字符串toString(){ 弦声; ostringstream ss; 一、追加(“”); auto it3=coords.begin(); while((it3)!=coords.end()){ ss,c++,C++" /> 坐标=坐标; } 字符串toString(){ 弦声; ostringstream ss; 一、追加(“”); auto it3=coords.begin(); while((it3)!=coords.end()){ ss,c++,C++" />

c++;属于非类类型错误的 首先,我要记住C++是一个完整的新手。今天我读了很多关于模板和字符串的书,但有几件事我想不出来。当我在测试类中使用point或任何其他值创建点时。我有一个错误:“v2”中的成员“tostring”请求为非类类型。。。 1.为什么我会犯这样的错误? 2.如何使Point()=默认值;使每个坐标值为0.0;就像我有一个点,它应该是(0.0),点应该是(0.0,0.0),依此类推: #ifndef POINT_H #define POINT_H #include <iostream> #include <list> #include <sstream> #include <string> using std::stringstream; #include <cmath> using namespace std; template<unsigned short n> class Point { public: list <float> coords = {0.0}; Point <n>() = default; Point <n>(list<float> coords){ this-> coords=coords; } string toString(){ string sone; ostringstream ss; sone.append("("); auto it3= coords.begin(); while ((it3) != coords.end()){ ss << (*it3); sone.append(ss.str()); ss.str(""); } sone.append(")"); return sone; } float distanceFrom (Point <n> v){ float s=0; list<float> coords; auto it1= coords.begin(); auto it2= v.coords.begin(); while ((it1) != coords.end()){ s+=(*it1 -*it2)*(*it1-*it2); it1++; it2++; } return sqrt(s); } friend std::ostream& operator <<(std::ostream& out, const Point<n>& v) { out << "("<<"Test"<<")"; return out; } }; #endif #如果不确定点(H) #定义点 #包括 #包括 #包括 #包括 使用std::stringstream; #包括 使用名称空间std; 模板 类点{ 公众: 列表坐标={0.0}; 点()=默认值; 点(列表坐标){ 这->坐标=坐标; } 字符串toString(){ 弦声; ostringstream ss; 一、追加(“”); auto it3=coords.begin(); while((it3)!=coords.end()){ ss

c++;属于非类类型错误的 首先,我要记住C++是一个完整的新手。今天我读了很多关于模板和字符串的书,但有几件事我想不出来。当我在测试类中使用point或任何其他值创建点时。我有一个错误:“v2”中的成员“tostring”请求为非类类型。。。 1.为什么我会犯这样的错误? 2.如何使Point()=默认值;使每个坐标值为0.0;就像我有一个点,它应该是(0.0),点应该是(0.0,0.0),依此类推: #ifndef POINT_H #define POINT_H #include <iostream> #include <list> #include <sstream> #include <string> using std::stringstream; #include <cmath> using namespace std; template<unsigned short n> class Point { public: list <float> coords = {0.0}; Point <n>() = default; Point <n>(list<float> coords){ this-> coords=coords; } string toString(){ string sone; ostringstream ss; sone.append("("); auto it3= coords.begin(); while ((it3) != coords.end()){ ss << (*it3); sone.append(ss.str()); ss.str(""); } sone.append(")"); return sone; } float distanceFrom (Point <n> v){ float s=0; list<float> coords; auto it1= coords.begin(); auto it2= v.coords.begin(); while ((it1) != coords.end()){ s+=(*it1 -*it2)*(*it1-*it2); it1++; it2++; } return sqrt(s); } friend std::ostream& operator <<(std::ostream& out, const Point<n>& v) { out << "("<<"Test"<<")"; return out; } }; #endif #如果不确定点(H) #定义点 #包括 #包括 #包括 #包括 使用std::stringstream; #包括 使用名称空间std; 模板 类点{ 公众: 列表坐标={0.0}; 点()=默认值; 点(列表坐标){ 这->坐标=坐标; } 字符串toString(){ 弦声; ostringstream ss; 一、追加(“”); auto it3=coords.begin(); while((it3)!=coords.end()){ ss,c++,C++,方法toString中的增量迭代器,它可以工作: string toString(){ string sone; ostringstream ss; sone.append("("); auto it3= coords.begin(); while ((it3) != coords.end()){ ss << (*it3);

方法toString中的增量迭代器,它可以工作:

string toString(){
            string sone;
            ostringstream ss;
            sone.append("(");
            auto it3= coords.begin();
            while ((it3) != coords.end()){  
                ss <<  (*it3);
                sone.append(ss.str());
                ss.str("");
                ++it3;
                ^^^
                }
            sone.append(")");
            return sone;
        }

要打印点,您必须使用
toString
方法
const

string toString() const { //... }

启用对常量点的调用。现在您可以在
运算符中使用它。这段代码对我来说编译得很好。但是如果您创建一个点:点v3{list{2.0,3.0};并尝试使用:cout@user3328230,在类内部,您不需要说
,只需要说
。除此之外,请不要将using指令或声明放在头中。@chris…至少要指定构造函数方法…@πάνταῥεῖ, 以及类定义中的任何其他地方。您唯一需要指定它的时间是当
n
与当前实例的
n
不相同时。这很正确,但不是问题中的错误,这是一个编译器错误,可能与问题中显示的内容无关。它与什么有关?我应该复制测试程序的代码或?我如何在friend std::ostream&operator@user3328230中使用toString?你的意思是将坐标写入cout吗?注意:这返回ostream&而不是Point如果我说cout
string toString() const { //... }
 friend std::ostream& operator <<(std::ostream& out, const Point<n>& v) {
        out << v.toString();
        return out;
 }