我有一個關於靜態變量或其他方式的問題。持久化類變量
我有一個主類PatternMatcher。我有幾個衍生單位,取決於使用什麼匹配器。現在每個子類都需要存儲一個浮點向量,但是在每個類中它是不變的。初始化過程中讀取該矢量的數據,最大可達1GB(最小的是1MB,最大的是1GB)。 目前當我有例如Matcher_A的兩個實例時,它會分配兩次內存。我事先不知道哪些匹配器將被使用(每次運行它將是三個匹配器,並且您可以多次使用相同的匹配器)。我寧願在運行時不檢查想要的匹配器是否已經在某處進行了初始化,因爲這需要爲我所做的每個更改都添加額外的代碼。
目前我分配3個匹配器與
PatternMatcher* a = new PMMatcherA();
PatternMatcher* b = new PMMatcherB();
PatternMatcher* c = new PMMatcherC();
,但因爲它們是用戶選擇的,它可能發生的是A和C是例如相同的。當我通過typeid(a).name();
運行支票時,它會給我PatternMatcher作爲結果,而不管我用什麼課程開始。 PatternMatcher基本上純粹是一個虛擬類。
我一直認爲靜態意味着一個變量在不同的分配上是不變的,但是當我將我的向量定義爲靜態時,我會得到一個鏈接器解析錯誤。在之前的迭代中,我將這些向量設置爲全局的,但希望將它們本地化爲其類。
我需要使用哪些關鍵字來使初始化的向量可用於下一次初始化?簡單的檢查向量大小是否大於0就足夠了,但是每個對象都使用自己的向量。
謝謝,這做到了。只有在第一次調用匹配器後,向量本身才會與數據堆疊起來,因此最初每個向量都只有sizeof(向量),這非常好。再次感謝! – SinisterMJ 2012-08-06 11:18:18