将指针传递给接受c ++引用的函数

时间:2014-09-09 15:58:27

标签: c++ operator-overloading

我想这是一个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打印它?

2 个答案:

答案 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>