2016-04-17 16 views
0

三角形の頂点を入力し、三角形の面積を求めたいと思います。私は頂点を読んでそれを印刷しようとしました。しかし、それはエラーを表示しています。構造体の配列に問題がありますか?

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

それはあなたがしようとしている構造体を表示する方法を知らないので、それが最も可能性が高い不平を言っている:あなたは、次の

#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行にあります.watが間違っています – user3217708

+1

いいえ;エラーを表示します。それは何と言いますか? – Stefan

答えて

2

はあなたのコードにこれを追加しようとした私をout.I助けることができます印刷します。


あなたは{x, y}としてそれを保存していても、結果はpはまだオブジェクトであるということです。 C++は、list initialization構文を使用してオブジェクトを作成する機能を提供します。実際にこのオブジェクトを表示するには、全く問題がありません。なぜなら、それはすべて<<演算子が処理するように定義されていないオブジェクトなので、仮想ハンドを空中に投げてエラーメッセージを吐き出すからです。

しかし、困難であることが判明している前記オブジェクトを処理する演算子の定義を作成したばかりなので、頂点オブジェクトを見るときに何をすべきかが分かっています。

希望のある方

+0

私はコードを理解できませんでした。私はbeginner.cout << vx << vyは十分ですか?私はちょうど(x、y)として印刷したいです。 – user3217708

+0

@ user3217708 'cout << p'それを防止しない答えを与えるかもしれない。 – smac89

+0

頂点p = {x、y}; // cout << p;なぜこれは動作していないのですか? pはx座標とy座標を持つ頂点で、{x、y}として格納されます – user3217708

関連する問題