2016-04-17 39 views
0

我想输入三角形的顶点并找到三角形的区域。我读了顶点并试图打印它。但它显示错误。你能帮我out.I尝试以下结构数组有什么问题?

#include <iostream> 
#include <math.h> 
using namespace std; 
struct vertex { 
    float x; 
    float y; 
}; 

struct triangle { 
    vertex vertices[3]; 
}; 

int main() 
{ 
    triangle t; 
    for (int i = 0; i < 3; ++i) { 
     double x, y; 
     cin >> x >> y; 
     vertex p = { x, y }; 
     cout << p; 
     t.vertices[i] = p; 
     // cout<<t.x; 
    } 
} 
+1

你能告诉我们错误吗? – Stefan

+0

错误在cout << p line.wat的错误 – user3217708

+1

不;显示错误。它说什么? – Stefan

回答

2

添加到您的代码:

std::ostream& operator << (std::ostream& oss, const vertex& v) { 
    return oss << '(' << v.x << ',' << v.y << ')'; 
} 

这是最有可能抱怨,因为它不知道如何显示您要的结构打印。


即使你保存它作为{x, y},结果是p仍然是一个对象。 C++只是为您提供了使用list initialization语法创建对象的能力。实际上显示这个对象是一个完全不同的问题,因为它看到的只是一些对象,运算符没有被定义为处理它,所以它会抛出虚拟手柄并吐出一条错误消息。

但是由于我们刚刚创建了一个处理所述对象的定义,该对象被证明很难,所以它现在知道在看到一个顶点对象时该怎么做。

希望有帮助

+0

我不明白code.i'm beginner.cout << vx << vy是足够的吗?我只是想打印为(x,y) – user3217708

+0

@ user3217708,够公平,我只是认为,因为你正在使用'cout << p'我可能会给出一个答案,但并不妨碍 – smac89

+0

顶点p = {x,y}; // cout << p;为什么这不起作用? p是具有x和y坐标的顶点,它存储为{x,y} – user3217708