클래스 생성자가 제대로 호출이 안되는것 같습니다.
글쓴이: 머그잔@Naver / 작성시간: 목, 2017/04/13 - 11:05오후
c++공부하면서 책을 보고 있는데 오류가 이해가 안되서 질문을 합니다.
============Point.h============ #pragma once class Point { public: void Print() const; Point(); Point(int initialX, int initialY); Point(const Point& pt); void SetX(int value); void SetY(int value); int GetX() const { return x; }; int GetY() const { return y; }; private: int x, y; }; ... =================Point.cpp============= #include "Point.h" #include <iostream> using namespace std; Point::Point(const Point& pt) { x = pt.x; y = pt.y; } Point::Point(int initialX, int initialY) { SetX(initialX); SetY(initialY); } Point::Point() { x = 0; y = 0; } void Point::Print() const { cout << "(" << x << ", " << y << ")\n"; } ... ==================Example.cpp=============== #include "stdafx.h" #include <iostream> #include "Point.h" using namespace std; void Area(const Point& pt); int main() { Point pt(50, 50); Area(pt); return 0; } void Area(const Point& pt) { int area = pt.GetX() * pt.GetY(); cout << "(0, 0)과 이점이 이루는 사각형의 면적 = " << area << endl; }
를 빌드하면 아래와 같은 오류가 발생합니다.
LNK2019 "public: __thiscall Point::Point(int,int)" (??0Point@@QAE@HH@Z) 외부 기호(참조 위치: _main 함수)에서 확인하지 못했습니다. LNK1120 1개의 확인할 수 없는 외부 참조입니다.
제가 보기엔 Point클래스의 객체를 생성할때 생성자를 제대로 못찾아서 그런것 같은데 왜 못찾는 것인지
파악이 안됩니다.
오버로딩된 생성자 중에 매개변수에 맞는 생성자 정의가 있는데 이유를 모르겠습니다.
답변 부탁드리겠습니다.
Forums:
ㅈㅅㅈㅅ.
이런 죄송해요 매개변수로 구분할수 있는데 새벽에 답글 다니까 잘못된걸 달았군용
제가 책을 보는 중이라
뇌를...C++책을 보고 예제를 따라하는 중인떼
저기서는 저렇게 쓰던거라 생성자를 오버로드 하더라구요.
머그로 커피한잔
link 에서 제대로 파일이 링크되지 않은 것
link 에서 제대로 파일이 링크되지 않은 것 같은데요.
어떤 링크를 봐야 할까요?
이제 책보고 예제 따라 하는중인데
특별히 링크에 대한 말은 없더라구요.
어느 링크를 확인해야 할까요?
머그로 커피한잔
IDE 에서 하셨나요? 아니면 빌드 명령어를 보여
IDE 에서 하셨나요? 아니면 빌드 명령어를 보여 주세요.
지금 VS2015입니다.
Visual Studio입니다.
콘솔모드 선택해서 새프로젝트로 만들었고 그냥 ctrl+F로 돌려봅니다.
파일첨부했습니다
머그로 커피한잔
Visual Studio로 열어볼 필요도 없군요.
Visual Studio로 열어볼 필요도 없군요.
example.vcxproj를 텍스트 에디터로 열어 보면 진상이 드러납니다.
Point.cpp가 빌드에 참여하지 않도록 설정됐군요. 왜 그렇게 하셨는지는 모르겠습니다만.
제가 의도적으로 설정 한 것은 아닙니다.
제가 아직 Visual Studio를 제대로 사용하는 방법을 몰라서
저렇게 설정 하느 방법도 모릅니다.
왜 저렇게 되었는지 모르겠네요.
설정들을 찾아봤는데 저 설정은 어디서 하는지요?
답변 주시면 감사하겠습니다.
머그로 커피한잔
댓글 달기