C++ 错误:与';不匹配;操作员<<&引用;在';标准::cout

C++ 错误:与';不匹配;操作员<<&引用;在';标准::cout,c++,cout,C++,Cout,我意识到这个错误通常是由于一些语法或类型问题,但我不知道如何解决这个问题。我认为这可能与findRt的类型有关 vector<triangle> findRightTriangles(unsigned long l, unsigned long h) { <triangle> retval; // storage for return value. triangle t; double what; for(t.s1 = 3; t.s1 <= h; t.

我意识到这个错误通常是由于一些语法或类型问题,但我不知道如何解决这个问题。我认为这可能与findRt的类型有关

vector<triangle> findRightTriangles(unsigned long l, unsigned long h) {

<triangle> retval; // storage for return value.

triangle t;    
double what;

for(t.s1 = 3; t.s1 <= h; t.s1++) {
    for(t.s2 = t.s1; t.s2 <= h; t.s2++) {
        what = sqrt((t.s1*t.s1) + (t.s2*t.s2));
        t.s3 = static_cast<unsigned int>(what);
        if(((t.s1*t.s1)+(t.s2*t.s2)) != (t.s3*t.s3) 
            || t.s1+t.s2+t.s3 < l 
                || t.s1+t.s2+t.s3 > h) {
            continue;
        }
        else if(t.s1+t.s2+t.s3 <= h 
            && t.s1+t.s2+t.s3 >= l 
                && t.s1+t.s2 > t.s3 
                    && ((t.s1*t.s1)+(t.s2*t.s2)) == (t.s3*t.s3)) {
            retval.push_back(t);
        }
    }
}
return retval;
}

int main(){

unsigned long min, max;

cin >> min >> max;

    //Here is the problem:
cout << findRightTriangles(min, max) << endl;

return 0;
}
矢量findRightTriangles(无符号长l、无符号长h){
retval;//返回值的存储。
三角形t;
加倍什么;
对于(t.s1=3;t.s1 t.s3
&&((t.s1*t.s1)+(t.s2*t.s2))==(t.s3*t.s3)){
返回。推回(t);
}
}
}
返回返回;
}
int main(){
无符号长最小值,最大值;
cin>>最小值>>最大值;
//问题是:

为什么会出现错误?

编译器报告错误,因为没有重载版本的
cout
要输出对象,您必须告诉它如何输出。一种方法是重载
,您必须使用迭代器创建重载版本的
操作符

例如

vector::迭代器;

coutOperator“什么是
三角形”
?它对
运算符有重载吗?你查过了吗?可能更便宜,也更容易说
常量向量&
。是的!刚刚意识到了这一点!谢谢。
std::vector<triangle>::const_iterator iter= vec.begin();
for(iter; iter != vec.end(); ++iter)
{
    cout<<*iter; //This is what step 2 provides for
}
ostream& operator<<( ostream& os, const triangle &) {}
ostream& operator<<( ostream& os, const vector<triangle>&)
{

}
ostream& operator<<( ostream& os, const vector<triangle>& vec ) {
    ...
    ... // here output to os the way you want it to
    os << ...
    return os;
}
ostream& operator<<(ostream& out, const vector<triangle>& triangles);
MyFoo object;
std::cout << object;
MyFoo object;
operator<<(std::cout, object);
ostream& operator<<(ostream& out, const MyFoo& my_object);