1
我試圖創建一個類'三角'表示爲類型'頂點'的向量,其中'頂點'是由'x'和'y'組成的結構雙重類型。我需要在「三角形」中使用蒼鷺公式返回該區域的成員函數,但我無法弄清楚如何訪問三角形中每個元素的單獨x和y分量。這是到目前爲止我的代碼,麻煩來的第三個代碼 - 的triangle.cpp文件訪問類的元素
vertex.h:
#ifndef VERTEX_H
#define VERTEX_H
#include <iostream>
struct vertex
{
double x, y;
vertex(double ix = 0.0, double iy = 0.0)
{
x = ix;
y = iy;
}
};
#endif // VERTEX_H
triangle.h:
#ifndef TRIANGLE_H
#define TRIANGLE_H
#include <iostream>
#include <vector>
#include "vertex.h"
class triangle
{
public:
triangle(vertex iv0 = vertex(), vertex iv1 = vertex(), vertex iv2 = vertex());
// pre:
// post: empty triangle
triangle(const triangle & source);
// pre:
// post: triangle created and initialized to given triangle source
vertex operator[](size_t i) const;
// pre: 0 <= i < 3
// post: return vertex i in this triangle
double area() const;
//pre:
//post: returns area of triangle
private:
std::vector<vertex> v;
};
std::ostream & operator << (std::ostream & os, const triangle & t);
std::istream & operator >> (std::istream & is, triangle & t);
#endif // TRIANGLE_H
三角形。 cpp源文件:
#include <cassert>
#include <vector>
#include <cmath>
#include "triangle.h"
triangle::triangle(vertex iv0, vertex iv1, vertex iv2)
{
v = std::vector<vertex>();
v[0] = iv0;
v[1] = iv1;
v[2] = iv2;
}
triangle::triangle(const triangle &source)
{
v = source.v;
}
vertex triangle::operator[] (std::size_t i) const
{
assert(i < v.size());
return v[i];
}
//HERE IS THE PROBLEM
double triangle::area() const
{
int a, b, c;
double s;
//need to use something like a = (v[0].y-v[1].y)/(v[0].x-v[1].x) to calculate area,
// this syntax is wrong however^^^
s = (a+b+c)/2;
return sqrt(s*(s-a)*(s-b)*(s-c));
}
std::ostream & operator << (std::ostream & os, const triangle & t)
{
for (size_t i = 0; i < 3; ++i)
os << t[i] << " ";
return os;
}
std::istream & operator >> (std::istream & is, triangle & t)
{
std::size_t n;
vertex vx;
is >> n;
for (size_t i = 0; i < n; ++i)
{
is >> vx.x >> vx.y;
}
return is;
}
什麼是確切的錯誤? – 0x499602D2
沒有錯誤,只需要幫助定義三角形的邊長 – user3201372
另外,你不想使用整數作爲a,b和c – kmort