[問題] parent class有辦法求繼承index嗎?

作者: johnjohnlin (嗯?)   2024-02-06 21:02:39
開發平台(Platform): (Ex: Win10, Linux, ...)
無指定,標準C++,可以在17或是之前的話最好
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
無指定
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
可以的話只用STL
問題(Question):
想請教一下,假設我有一個 class 是
class Derive: public B1, public B2
是否有簡單的方法得到static constexpr的值
Derive::GetIndex(B1*) = 0
Derive::GetIndex(B2*) = 1
可以先不考慮多重、多層繼承之類的複雜case
只需要先處理這種直接繼承關係
謝謝各位了~
作者: CoNsTaR ((const *))   2024-02-06 23:29:00
template <typename T> auto getIndex() { return T::index; }這樣有符合需求嗎?
作者: fatrabitree (胖兔子)   2024-02-07 00:06:00
https://godbolt.org/z/zWTYeY79x再配合一下MACRO應該可以不用手動建set
作者: LPH66 (-6.2598534e+18f)   2024-02-07 01:18:00
我有點好奇「求多重繼承指定父類的順序」的用處在哪
作者: johnjohnlin (嗯?)   2024-02-07 09:39:00
@LPH大大寫我在寫某個class繼承了consumer/producer,使用者會用父介面呼叫這個class,然後我想要建出相依關係的topological graph二樓那個拿offset的方法好像可以試試看
作者: CoNsTaR ((const *))   2024-02-08 09:08:00
所以你不是想要得到 parent class 某個 constexpr 的值,你是要把 parent class 拿來排序
作者: firejox (Tangent)   2024-02-08 10:00:00
std variant
作者: johnjohnlin (嗯?)   2024-02-08 11:09:00
variant不適用我的場景,我需要有繼承關係
作者: LPH66 (-6.2598534e+18f)   2024-02-08 13:52:00
如果這個排序可以不必是繼承順序的話 (建圖應該可以不是)typeid(型態) 所得到的 type_info 物件有 hash_code() 能用或者根本可以用此 type_info 的 before() 方法判斷順序

Links booklink

Contact Us: admin [ a t ] ucptt.com