Передача указателя на функцию, которая принимает ссылку в C ++

0

Я думаю, это вопрос 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;
};

И вот реализация функции оператора <<:

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

Теперь в основной функции у меня есть Point *p;... Как распечатать его с помощью std::cout?

  • 2
    разыменовать это с *p
  • 2
    cout << *p << endl
Показать ещё 5 комментариев
Теги:
operator-overloading

2 ответа

0
Лучший ответ

Итак, я, наконец, узнал, в чем проблема.

Хотя все учебники, книги и даже c++ ссылки согласны с тем, что inline директива может быть проигнорирована компилятором, выясняется, что когда я удаляю inline ключевое слово из реализации перегруженной функции, все работает.

3

Вам нужно разыменовать свой указатель, но поскольку указатели могут быть нулевыми, сначала проверьте.

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

или даже просто

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

И теперь, идите и прочитайте это в нашей вики сообщества, надеюсь, он предоставит вам ответы.

Каковы различия между переменной указателя и ссылочной переменной в C++?

  • 0
    на самом деле эта ссылка не в вики сообщества, но, возможно, она должна быть
  • 1
    Ты имеешь в виду - до nullptr ?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню