2012-04-26 2 views
-3

Смотрите примерКак напечатать имя объекта вызывающего абонента внутри функции члена класса?

class MyClass { 
    public: 
    void fn() { 
      // Here I want to print caller object name,(here it is ***it1***) 
     } 
    }; 


    int main() { 
     MyClass it1; 
     it1.fn(); 
     return 0; 
    } 
+0

Почему вы хотите сделать что-то подобное? – Matten

+0

Вы не можете. В лучшем случае вы можете сделать 'typeid (* this) .name()', который даст имя * для реализации ** типа *** 'MyClass'. –

ответ

0

переменной имя экземпляра не доступно в основном по двум причинам:

  1. Это не бизнес вызываемой функции, поэтому она не может быть доступна. Весь смысл процедурного программирования - , а не доступ к контексту вызова через что-либо, кроме формальных параметров.
  2. Названия переменных не влияют на конечную программу. Не должно быть и неважно, называете ли вы свою переменную it1, foo или даже обрабатываете ее анонимно.

Или, в короткие сроки: Если fn() будет сопзЬ, вы могли бы назвать это с временным:

MyClass().fn(); 

Что бы ваш ответ тогда? Что для массива объектов MyClass? Имена переменных определяют, какие функции вызывать, а не как эти функции работают.