2015-01-27 2 views
0

Я перехожу от Java к C++ и задаю простой вопрос. Если это дубликат, будьте терпеливы и направляйте меня на вопрос.Передача класса в его собственную функцию-член

Рассмотрим следующие классы с их функциями членов:

class Painter { 
public: 
    void paint(Building *house) { 
     // paint the building 
    } 
}; 

class Building { 
public: 
    void passToPainter(){ 
     painter.paint(this); 
    } 
private: 
    Painter painter; 
}; 

Линия painter.paint(this); синтаксис Java. Что такое синтаксис в C++?

спасибо.

+2

«Что такое синтаксис в C++» - точно так же)) – borisbn

+1

Вам нужен промежуточный класс, который обрабатывает взаимодействия между классами. Рекурсивные отношения в ООП не рекомендуется. – Poriferous

+0

Спасибо всем. @Poriferous. На самом деле я не мог заставить его работать в рекурсивном отношении, которое я написал выше. Это дает массаж ошибок «#include вложен слишком глубоко». Использование промежуточного класса решило мою проблему. Еще раз спасибо. – Hassan

ответ

5

Это идентично. Но в C++ this является указателем экземпляру объекта, тогда как в Java это ссылка.

В C++ this будет указателем const, если он вызван из функции-члена, помеченной const. Это помогает достичь стабильности программы.

+0

В Java, как и в C++, 'this' является указателем. По какой-то причине документация Java ссылается на ссылки, которые на самом деле являются указателями. –

Смежные вопросы