2016-04-17 38 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