獲取類的方法列表
回答
沒有這是不可能的一般方式。 C++沒有.Net擁有的相同元數據基礎架構。
您能否向我們提供您想要使用此信息的場景?有可能是一個更好的方法,您可以用C++
現在,它只是出於好奇。我的意思是,昨天我正在考慮某種圖書館來處理JSON數據,但今天我不記得爲什麼我想到這種方法-_-。問題仍然存在,所以我問。 – 2010-08-19 21:57:31
這是一個很好的說明,即使語法看起來相似,語言也是如此不同。兩種語言如何解決問題的心態完全不同。 – tenfour 2010-08-19 22:38:42
製作.h文件的副本,並在編輯器中對其進行破解。
不,沒有辦法自動完成。
沒有元類在C++中唯一對象和類,因此沒有反映無法參與使用,所以答案是否定的。
你可以使用typeid但不是方法的信息類型的信息。
沒有辦法。
事實上,即使在目標代碼級,靜態類的成員函數不能從一個獨立的功能區別,也沒有從指針傳遞到一個對象的獨立功能的類的實例的功能。
如果您知道您的編譯器名稱修改方案,並且可以訪問預先鏈接的目標代碼,那麼您可能可以對其進行解碼,但這對於iffy結果來說有很多工作要做。
+1爲硬核「得到呃完成」的方法。 – tenfour 2010-08-19 22:24:35
如果你真的要做到這一點,的高級C++編程風格和習語詹姆斯Coplien第8章(可能是長,因爲絕版,但是我聽到了尼爾願意出售自己的副本便宜)涵蓋C++中的「範例」編程。不要錯,這個功能不是免費的,但它可以/提供類似於C++的元類功能。
隨口說說,我不記得他的建築你正在尋找到他的課的一個特定的功能,但它一直以來我仔細看了那本書在所有要麼很長一段時間。它總是可能它根本不能完成,但我認爲它會工作,如果你能忍受他披露的其他限制。
在我的項目,我使用的類成員聲明和定義特殊的宏,然後 我可以得到類成員的名單。例如:
類聲明:
#define DECLARE_MODULE_FUNCTION(function_name) \
JsonObject function_name(JsonObject value);
#define DEFINE_MODULE_FUNCTION(function_name) \
static ModuleFunctionAdder<LotteryOddsModule> \
__LINE__##function_name(L ## #function_name , &LotteryOddsModule::function_name); \
JsonObject LotteryOddsModule::function_name(JsonObject value)
template< typename T >
class ModuleFunctionAdder;
class LotteryOddsModule
{
public:
typedef JsonObject (LotteryOddsModule::*ModuleFunction)(JsonObject);
JsonValue Invoke(JsonValue json_value);
DECLARE_MODULE_FUNCTION(GenerateK1AndK2);
private:
friend class ModuleFunctionAdder<LotteryOddsModule>;
static std::map< WString , ModuleFunction > _module_functions;
};
template<>
class ModuleFunctionAdder<LotteryOddsModule>
{
public:
ModuleFunctionAdder(WString func_name , LotteryOddsModule::ModuleFunction func)
{
LotteryOddsModule::_module_functions[ func_name ] = func;
}
};
類定義:
JsonValue LotteryOddsModule::Invoke(JsonValue json_value)
{
return (this->*_module_functions[ L"GenerateK1AndK2" ]) (json_value.get_obj());
}
DEFINE_MODULE_FUNCTION(GenerateK1AndK2)
{
//...
}
- 1. 獲取任意類的類方法列表
- 2. 獲取列表的最有效方法?
- 3. 獲取TestNG測試套件的類中_all_方法的列表
- 4. 獲取類中的所有方法的屬性列表
- 5. 獲取方法/函數中使用的類的列表
- 6. REST獲取列表方法的容器類
- 7. 獲取參數列表的一類方法
- 8. 如何獲取對象或類的方法列表?
- 9. 如何從java中的類中獲取方法列表?
- 10. 獲取類的列表lambdas
- 11. 獲取父類的列表
- 12. 獲取類的列表,
- 13. 使用flex獲取列表netConnection.call方法
- 14. Python - 從另一個類方法獲取列表
- 15. 類中的方法列表
- 16. 使用ADO OpenSchema方法獲取表列表,列表和值
- 17. 如何獲取類方法?
- 18. 方法獲取類GregorianCalendar?
- 19. PHP獲取子類方法
- 20. 獲取類的列表類型從ParameterizedTypeImpl
- 21. 獲取類型值列表
- 22. 鏈接列表使用遞歸方法獲取方法
- 23. 將參數列表作爲body或POST方法獲取方法?
- 24. 如何從方法列表中獲取對象列表listBox1_MouseClick C#
- 25. 獲取包含表的數據庫列表的有效方法
- 26. 獲取隨機數據列表的算法/工作方法
- 27. 如何獲取表格中的方法列表?
- 28. 生成帶方法類型的類的方法列表
- 29. 無法通過類方法獲取csv
- 30. 獲取可從java源代碼調用的類的方法列表
除非你手工做。這是一個需要的可怕的事情。爲什麼? – GManNickG 2010-08-19 21:48:07
@Gman:+1「可怕的東西需要」 – 2010-08-19 21:56:32
@GManNickG爲什麼不能通過生成類的解析樹來生成C++類的方法列表? – 2013-03-12 03:56:38