• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

9.2강 << 연산자 오버로딩 강의 질문입니다.

22.07.04 15:21 작성 조회수 174

0

다음은 9.2강에서 나오는 코드입니다.

#include <iostream>
using namespace std;

class Point
{
private:
double m_x, m_y, m_z;
public:
Point(double x = 0.0, double y = 0.0, double z = 0.0)
: m_x(x), m_y(y), m_z(z)
{}
double getX() { return m_x; }
double getY() { return m_y; }
double getZ() { return m_z; }
// friend 전역 함수
friend std::ostream& operator << (std::ostream& out, const Point& point)
{
out << "( " << point.m_x << " " << point.m_y << " " << point.m_z << " )";
return out;
}
};

int main()
{
Point p1(0.0, 0.1, 0.2), p2(3.4, 1.5, 2.0);
cout << p1 << " " << p2 << endl;

return 0;
}
 

저는 연산자 오버로딩 함수가 매개변수로 const Point& point 를 받기 때문이라고 생각했지만

const를 지워도 같은 오류가 나옵니다.

오류와 별개로 코드를 실행하면 정상적으로 작동합니다.

질문 : 비주얼스튜디오 2022에서 위와 같은 오류가 뜨는데 원인을 모르겠습니다.

 

답변 1

답변을 작성해보세요.

0

강민철님의 프로필

강민철

2022.07.05

string 을 cout하기 위해서는 string 라이브러리를 포함해야 합니다.

기본적으로 iostream 내부에 string 헤더파일이 정의되어 있으나,

다양한 이유로 찾지 못하는 경우도 있습니다.

질문자님의 상황이 그런 상황 같습니다.

상단에 #include <string> 을 추가해보세요.

 

참고

https://drawingprogrammer.tistory.com/17

https://jeongupark-study-house.tistory.com/5

https://www.dogdrip.net/234537116