昨天睡前試了一下把boost::regex改成QRegexp,結果很不幸地發現該模組的架構會因此而更動。
原本是把各個式子存成匿名空間全域常態變數,再在成員函式裡使用boost::match;但是由於QRegexp是個有狀態行為的物件,它不能成為常態變數,於是我只有兩個選擇:一是讓它成為私有實體成員,每次建構實體都重新建構一次,缺點是物件會變大,但是它會是多緒安全物件;一是讓它成為私有靜態成員或是匿名空間全域變數,好處是不會額外佔用空間,壞處是它不具有多緒安全。
我想其他的模組也有可能會遇到相同狀況....
沒有留言:
張貼留言