我想这是一个n00b问题,因为我无法在网上找到任何关于它的信息......
这是Point类:
class Point {
public:
Point();
Point(double x, double y);
double getX() const;
double getY() const;
void setX(double);
void setY(double);
friend std::ostream& operator<<(std::ostream& os, const Point& obj);
private:
double x;
double y;
};
这是运营商&lt;&lt;的实现功能:
inline std::ostream& operator<<(std::ostream& os, const Point& obj) {
os << "(" << obj.getX() << "," << obj.getY() << ")";
return os;
}
现在,在main函数中我有Point *p;
...如何使用std::cout
打印它?
答案 0 :(得分:3)
你需要取消引用你的指针但是因为指针可以为null,你应该先检查。
if( p != nullptr )
std::cout << *p << std::endl;
甚至只是
if( p )
std::cout << *p << std::endl;
现在,请在我们的社区维基中阅读本文,希望它能为您提供答案。
What are the differences between a pointer variable and a reference variable in C++?
答案 1 :(得分:0)
所以,我终于找到了问题所在。
尽管所有教程,书籍甚至c ++参考都同意编译器可以忽略inline
指令,但事实证明,当我从重载函数的实现中删除inline
关键字时,一切正常。< / p>