我是C++中的新成員,並嘗試編寫緩存模擬器。二級緩存的構造是用參數聲明類對象而不使用if ... else
CACHE (int, int, int, int, CACHE *); //declare
,並在main()
,我想根據一些變量來創建對象:
int main()
{
if (L2_size == 0) //only one level of cache
{
CACHE L1(L1_size, blocksize, L1_assoc, inclusion, 0);
}
else //2 level of caches
{
CACHE L2(L2_size, blocksize, L2_assoc, inclusion, 0);
CACHE L1(L1_size, blocksize, L1_assoc, inclusion, &L2);
}
}
這樣做的問題是,我不能夠訪問L1和L2,因爲它們的範圍在...內。
此外,我試過使用? :運營商實施此,仍然得到錯誤:
三元運算符不匹配。
有沒有辦法做到這一點?謝謝!
包含如何使用'L2'和'L1'的示例。例如,如果'L2_size == 0',沒有'L2',那麼試圖使用'L2'的代碼應該發生什麼?或者這只是關於'L1'? – Yakk 2013-02-12 20:37:35
你看過這篇文章嗎? http://stackoverflow.com/questions/1917718/are-multiple-conditional-operators-in-this-situation-a-good-idea – 2013-02-12 20:49:30
如果L2_size == 0,沒有對象的二級緩存 – ARGOS 2013-02-12 21:06:21