Как передать указатель на структуру конструктору? - PullRequest
0 голосов
/ 10 июня 2019

Я хочу передать указатель на структуру (переменные этой структуры - это массив с элементами, которые имеют значения x и y) в конструктор.Затем я хочу присвоить значения x и y каждой переменной этой структуры аналогичным значениям переменных структуры в классе.

class Convex_quadrliteral
{
    protected:
    struct VC {
        float x, y;
    } vertice_coordinate[4];

    public:
    Convex_quadrliteral (VC *pointerVC);
};

Convex_quadrliteral::Convex_quadrliteral (VC *pointerVC) {  
    cout << "\nObject is being created" << endl;

    for (int i = 0; i < 4; i++) //variable initialisation
    {   
        vertice_coordinate[i].x = pointerVC[i].x;
        vertice_coordinate[i].y = pointerVC[i].y;
    }

    //object's properties output
    cout << "Properties: " << endl  
         << "A (" << vertice_coordinate[0].x << ", " << vertice_coordinate[0].y << ")" << endl
         << "B (" << vertice_coordinate[1].x << ", " << vertice_coordinate[1].y << ")" << endl
         << "C (" << vertice_coordinate[2].x << ", " << vertice_coordinate[2].y << ")" << endl
         << "D (" << vertice_coordinate[3].x << ", " << vertice_coordinate[3].y << ")" << endl;
}

int main()
{
    struct vertice_coordinate 
    {
        float x, y;
    };

    vertice_coordinate *pointerVC = new vertice_coordinate[4];

    for (int i = 0; i < 4; i++) {
        pointerVC[i].x = 2;
        pointerVC[i].y = 2;
    }

    Convex_quadrliteral figure_1(pointerVC);

Я ожидаю выход: A (2, 2) B (2), 2) C (2, 2) D (2, 2)

Вывод является ошибкой: нет объявления, совпадающего с 'Convex_quadrliteral :: Convex_quadrliteral (Convex_quadrliteral :: VC *)' C C onvex_quadrliteral :: Convex_quadrliteral (VC *pointerVC)

1 Ответ

2 голосов
/ 10 июня 2019

Вы переопределяете свою структуру VC, и даже если структура выглядит идентично, компилятор будет рассматривать их как два разных типа. Определите одну структуру и используйте ее как в своем классе, так и в основном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...