Неправильно выводится массив float, через шаблон класса

#include <iostream>
using namespace std;

template<typename xy>
class triangle
{
public:
    triangle(xy* coord1, xy* coord2, xy* coord3)
    {
        memcpy(coord1, coord1, 2);
        memcpy(coord2, coord2, 2);
        memcpy(coord3, coord3, 2);
    }

    void square()
    {
        for(int i = 0; i<2; i++)
        {
            cout << coord1[i] << endl;
        }
    }

private:
xy coord1[2];
xy coord2[2];
xy coord3[2];

};

int main()
{
    double A[2] = {123123, 3.3};
    double B[2] = {1.4, 3.3};
    double C[2] = {1.4, 3.3};
    triangle<double> c(A, B, C);
    c.square();

    return 0;
}

В итоге выводит 2.05591e+266 8.0085e-307 Как сделать так, чтоб числа выводились в нормальном формате? setrprecision не помогает.


Ответы (2 шт):

Автор решения: Andrej Levkovitch

Воспользуйтесь fixed из iomanip

→ Ссылка
Автор решения: ikarimaru
template<typename xy>
class triangle
{
public:
    triangle(xy *point1, xy *point2, xy *point3)
    {
        memcpy(coord1, point1, sizeof(coord1));
        memcpy(coord2, point2, sizeof(coord2));
        memcpy(coord3, point3, sizeof(coord3));
    }

    void square()
    {
        for(int i = 0; i<2; i++)
        {
            cout << coord1[i] << endl;
        }
    }

private:
xy coord1[2];
xy coord2[2];
xy coord3[2];

};

Проблема была в неверном копировании массива

→ Ссылка