我有這個類:C++ 「<<」 操作符重載
// 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
是指針......)。 我很確定上述函數根本沒有被調用。
*「否則,模板搜索並找到指針打印功能。」 *不,他的過載,應改爲調用。我猜,從Yakk說的那個地方他不知道從哪裏來。 – Pubby
是的,我的錯誤。我沒有注意到*和第一次閱讀它... –
我應該在調用'cout << * p'的文件中添加'#include「Platform.cpp」'嗎? –