hj1004
132
2020-10-25 19:04:46
2
2113

c++ 생성자 에러가 났는데 왜 에러난건지 모르겠네요..


안녕하세요 c++ 방통대 과제중인 직장인입니다


다각형을 나타내는 객체를 만들기 위한 클래스를 선언하려고 한다. 다각형은 세 개 이상의 꼭짓점 좌표로 정의된다

꼭짓점 수와 꼭짓점 좌표(꼭짓점 수에 해당되는 2차원 좌표의 배열)를 매개변수로 받아 다각형 객체를 생성한다(생성자).


이런 것을 만들려고 


struct C2D {
	double x, y;
};

class Polygon{
	int point;
	C2D arr[];
public:
	Polygon(int point_ = 0, C2D arr_[] = {}){
                point = point_;

	        for (int i = 0; i < point_; i++) {
		      arr[i] = arr_[i];
	        }
        }
};

polygon.h


#include "Polygon.h"
#include <iostream>
using namespace std;

int main() {
	Polygon p1 = Polygon(2, { {1, 2}, {3, 4} });
}

main.cpp


이렇게 만들었는데 

main의 Polygon(2, { {1, 2}, {3, 4} }) 이 부분에서

인수 목록이 일치하는 생성자 "Polygon::Polygon"의 인스턴스가 없습니다.

인수 형식이 (int, {...})입니다.

라고 나오네요


무엇이 잘못된건가요??

0
  • 답변 2

  • kimchs9325
    421
    2020-10-25 19:18:59 작성 2020-10-25 19:19:42 수정됨


    #include <iostream>

    using namespace std;

    typedef struct _C2D {

    double x, y;

    } C2D;

    class Polygon{

    int point;

    C2D arr[];

    public:

    Polygon(int point_ = 0, C2D arr_[] = {}){

            point = point_;


       for (int i = 0; i < point_; i++) {

      arr[i] = arr_[i];

       }

        }

    };


    int main() {

        C2D c2d[2];

        c2d[0] = {1, 2};

        c2d[1] = {3, 4};

        Polygon p1 = Polygon(2, c2d);

        return 0;

    }

  • hj1004
    132
    2020-10-25 19:34:55

    kimchs9325  // 아하 구조체를 먼저 선언하고 넣어야 되는군요

    감사합니다!!

  • 로그인을 하시면 답변을 등록할 수 있습니다.