// in Platform.h
class Platform
{
private:
float y;
float xi;
float xf;
public:
Platform(float y, float xi, float xf);
virtual ~Platform(void);
float getxi();
float getxf();
};
을 그리고 난이 할 수 있도록하려면 :
Platform* p = new Platform(1.0,2.0,3.0);
cout << p; // should it be *p?
나는 "< <"연산자를 오버로딩 시도
을 이 같은 :
// in Platform.cpp
std::ostream& operator<<(std::ostream& out, Platform* p)
{
out << "Platform: xi=" << p->getxi() << ", xf=" << p->getxf() << std::endl;
return out;
}
그러나 p
은을하기 때문에 이것은 단지, 물론 (메모리 주소를 출력 포인터 ...). 위의 함수가 전혀 호출되지 않았 음을 확신합니다. 이 밖에 볼 수 있도록
std::ostream& operator << (std::ostream& out, const Platform& p) { }
는 또한 헤더 파일에이를 내 보내야합니다 ...
so cout << *p ;
을 그리고 기존의 연산자는 다음과 같습니다
* "에 대한 그렇지 않으면 템플릿 검색 및 포인터 인쇄 기능을 발견한다."* 아니, 자신의 과부하 대신 호출해야합니다 : 당신은 할 수 있습니다. Yakk이 말했듯이 그가 어디에서 전화를했는지는 알 수 없습니다. – Pubby
예, 저의 실수입니다. 나는 * vs & 처음 읽은 것을 눈치 채지 못했습니다 ... –
'cout << * p'를 호출하는 파일에'#include "Platform.cpp"를 추가해야합니까? –