2011-11-15 117 views

回答

3

你大概的意思是:

Myclass obj; 

,那麼你想知道對象的名稱爲obj,你想通過this

答案要做到這一點:
沒有你不能。 C++中沒有可用的反射。

+0

有一個非常少量的反射可用。 –

+0

@ IgnacioVazquez-Abrams:我相信不是以一種標準化的方式,但是如果能夠了解更多關於這點的信息會很好,你能提供一些參考嗎? –

+0

@Als:'typeid'和'dynamic_cast'是基本的反射特徵。 – GManNickG

1

是的,是這樣的:

#include <iostream> 
#include <typeinfo> 
struct C 
{ 
    C(){ 
     std::cout<<typeid(*this).name()<<std::endl; 
    } 
}; 
int main() { 
    C c; 
} 
+0

這給'type'不是'name'。 –

+0

Als和我的答案完全不同。如果我錯過了這一點,請告訴我 –

2

讓我們假設有一個函數getName()返回的對象的「名稱」。你期望結果如何用於下面的代碼?

struct Object { 
    Object() { getName(); } 
    void getName() { cout << getName(this) << endl; } 
}; 

int main() { 
    new Object; 
} 

或者這個怎​​麼樣?

int main() { 
    Object o; 
    Object& r = o; 
    r.getName(); //should it print `r` or `o`? 
} 

總之:不,當然不是。

相關問題