C 類型別能否作為引數儲存?

時間 2021-06-03 14:59:53

1樓:夏洋

當這些類都繼承自乙個基類時,可以(其實就是個factory):

struct

Base

;typedef

map<

string

,std

::function

void

)>>Creators

;Creators

*GetCreators

()Base

*create

(const

string

&key

)template

T>Base

*createor

()#define REGISTER(key, clazz) \static bool __dummy__##clazz = \((*GetCreators())[key] = createor, true)

structA:

public

Base

};REGISTER

("001",A

);structB:

public

Base

};REGISTER

("002",B

);int

main

()如果你要的是純反射,這個真沒有。

C 的類型別中,怎麼往物件中的析構函式傳引數?

析構函式不可以加引數。如果你要達到這樣的效果,自己寫乙個處理函式,它可以是你這個要析構類的成員函式,在裡面做一些你要做的事情,它可以帶引數。 已登出 Calvin Neo 的回答已經非常好了,我說說我的看法。1 希望題主可以說明一下為什麼需要給析構函式中傳入引數,其目的是什麼?2 因為C 的析構函式...

scala的型別引數是否 能否具有C template一樣的表現能力,是否有其他語言具有類似能力?

FRANK defabs T Numeric Ordering a T 這樣不就行了,其實這主要是因為Scala裡運算子是方法,而C 裡運算子就是運算子。直接寫不行是因為Scala不知道T是不是有 這個方法,而C 只會在T沒有過載 是才會報錯 楊博 樓上幾位說的type class在標準庫中就有,直...

C 抽象類作為模板引數,當其為指標時,如何析構?

小明 別總想著只要是物件就要new,多用RAII解決資源問題。首先你的linklist初始化就不要new.你要做的是過載 operator 接著linklist繼承的是linerlist是如何實現,為啥抽象基類要具體化,你只是使用他的指標。多用智慧型指標,如果嫌棄智慧型指標,就學一下智慧型指標的思路...