繁体   English   中英

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

[英]Passing pointer to function that accepts reference in c++

我想这是一个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;
};

这是operator <<函数的实现:

inline std::ostream& operator<<(std::ostream& os, const Point& obj) {
   os << "(" << obj.getX() << "," << obj.getY() << ")";
   return os;
}

现在,在主函数中,我有Point *p; ...如何使用std::cout打印它?

您需要取消引用指针,但是由于指针可以为null,因此应首先检查。

if( p != nullptr )
   std::cout << *p << std::endl;

甚至只是

if( p )
   std::cout << *p << std::endl;

现在,去阅读我们社区Wiki中的内容,希望它将为您提供答案。

C ++中的指针变量和引用变量之间有什么区别?

因此,我终于发现问题出在哪里。

尽管所有教程,书籍甚至c ++参考文献都同意inline指令可以被编译器忽略,但事实证明,当我从重载函数的实现中删除inline关键字时,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM