저는 온라인 비디오에서 배우려고 C++ 초보자입니다. 강의에있는 연산자 오버로드 예제에서 다음 코드가 있으며 오류가 발생했습니다.<< C++에서 연산자 오버로드 오류
error: no match for 'operator<<' in 'std::cout << operator+(((point&)(& p1)), ((point&)(& p2)))'compilation terminated due to -Wfatal-errors.
줄에 주석이 표시되어 있습니다. 누군가 코드에서 무엇이 잘못되었는지 말할 수 있습니까? 나는 교수가 강연에서 설명했던 것을 시도하고 있지만 컴파일 할 수는 없다.
===============
#include <iostream>
using namespace std;
class point{
public:
double x,y;
};
point operator+ (point& p1, point& p2)
{
point sum = {p1.x + p2.x, p1.y + p2.y};
return sum;
}
ostream& operator<< (ostream& out, point& p)
{
out << "("<<p.x<<","<<p.y<<")";
return out;
}
int main(int argc, const char * argv[])
{
point p1 = {2,3};
point p2 = {2,3};
point p3;
cout << p1 << p2;
cout << p1+p2; // gives a compliation error
return 0;
}
모두에게 감사드립니다. 그게 효과가 있었어. – kaushal