[英]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 ++参考文献都同意inline
指令可以被编译器忽略,但事实证明,当我从重载函数的实现中删除inline
关键字时,一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.