2012-04-26 28 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 2012-04-26 11:38:36

+0

你不能。最多你可以使用'typeid(* this).name()',這會給出*實現定義的**類型名稱***'MyClass'。 – 2012-04-26 11:38:38

回答

0

實例的變量名不可主要是由於兩方面的原因:

  1. 它是沒有被調用函數的業務,所以它不能被訪問。程序編程的全部點是而不是通過任何形式的參數來訪問調用上下文。
  2. 變量名稱對最終程序沒有影響。不管你是否稱你的變量it1,foo,甚至匿名處理它都不應該也沒關係。

或者,在短期條款:如果fn()是常量,你可以用臨時調用它:

MyClass().fn(); 

什麼是你的答案呢?什麼爲MyClass對象的數組?變量名稱決定調用哪些函數,而不是這些函數的工作方式。

相關問題