2016-04-17 14 views
0

Ich möchte die Eckpunkte eines Dreiecks eingeben und die Fläche des Dreiecks finden. Ich las die Scheitelpunkte und versuchte es zu drucken. Aber es zeigt Fehler. Können Sie mir helfen out.I folgendes versuchtWas ist los mit Array von Strukturen?

#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

Können Sie uns den Fehler hilft? – Stefan

+0

Fehler ist in cout << p line.wat ist falsch damit – user3217708

+1

Nein; zeige den Fehler an. Was sagt es? – Stefan

Antwort

2

Fügen Sie diese auf Ihren Code:

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

Es beschwert sich höchstwahrscheinlich, weil sie nicht weiß, wie die Struktur angezeigt werden Sie versuchen, drucken.


Auch wenn Sie es als {x, y} gespeichert sind, ist das Ergebnis, dass p ist immer noch ein Objekt. C++ gibt Ihnen nur die Möglichkeit, Objekte mit der Syntax list initialization zu erstellen. Um dieses Objekt tatsächlich anzuzeigen, ist das ein ganz anderes Problem, da es nur ein Objekt gibt, für das der Operator << nicht definiert ist, so dass es seine virtuellen Hände in die Luft wirft und eine Fehlermeldung ausspuckt.

Aber weil wir gerade eine Definition dieses Operators erstellt haben, der das genannte Objekt behandelt, das sich als schwierig erwies, weiß es jetzt, was zu tun ist, wenn es ein Vertex-Objekt sieht.

Hoffnung, die auch

+0

Ich habe den Code nicht verstanden.Ich bin ein Anfänger.Cout << Vx << vy ist genug? Ich möchte nur als (x, y) – user3217708

+0

@ user3217708 drucken, fair genug, dachte ich nur, da Sie verwendet wurden 'cout << p 'Ich könnte auch eine Antwort geben, die nicht verhindert, dass – smac89

+0

Vertex p = {x, y}; // cout << p; Warum funktioniert das nicht? p ist der Eckpunkt mit der x- und y-Koordinate und wird als {x, y} – user3217708