연산자 오버로딩중 질문입니다.
1>Base Test.obj : error LNK2019: "class std::basic_ostream > & __cdecl operator<<(class std::basic_ostream > &,class Matrix const &)" (??6@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV01@ABVMatrix@@@Z) 외부 기호(참조 위치: "void __cdecl renderScene(void)" (?renderScene@@YAXXZ) 함수)에서 확인하지 못했습니다.
이렇게 에러가 뜨는데.. 뭐가 문제인지 잘 모르겠네요;;
먼저 클래스는
-----------
class Matrix
{
friend ostream& operator <<(ostream& os, const Matrix& m);
public:
Matrix();
Matrix(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9);
Matrix(Vector v1, Vector v2, Vector v3);
void set_matrix(int x, int y, double d);
void set_matrix(double x1, double x2, double x3, double x4, double x5, double x6, double x7, double x8, double x9);
double get_matrix(int x, int y);
private:
double matrix[3][3];
};
이렇게 생겼구요
ostream& operator <<(ostream& os, Matrix& m)
{
for(int i = 0; i < 3; i++)
{
os << "( ";
for(int j = 0; j < 3; j++)
{
os << m.get_matrix(i, j) << " , ";
}
os << "\b\b )";
}
return os;
}
-----------
위가 연산자 오버로딩 하는 부분입니다.
-----------
cout << m1 << ", " << m2 << endl;
-----------
이게 실제 메인에서 쓰인 부분이구요..
오버로딩한 함수의
오버로딩한 함수의 원형(프로토타입)과 정의할때의 인자 타입을 잘 비교해보세요.
댓글 달기