我有一個虛擬Log(std::string const&)
方法的抽象Logger
類。這樣我可以實現任何類型的日誌記錄。保持一個可變的參考我的記錄器一個好主意?
該方法不是常量,因爲我可以創建我的記錄器(QtLogger
)的Qt實現。它會登錄到一個小部件,因此修改一個對象。
現在讓我們假設我保留一個唯一的QtLogger
對象,並通過引用傳遞給需要記錄內容的任何對象。問題是Log()
方法不是const的,所以我不能在const方法中記錄任何東西...
對我的QtLogger
保留可變引用是個好主意嗎?
如果是,那麼爲什麼我會遇到以下gcc錯誤? (4.6.1)
reference ‘_logger’ cannot be declared ‘mutable’ [-fpermissive]
編輯:我如何聲明的參考:QtLogger mutable& _logger;
有點失落的故事(我從來沒有用過mutable),但是const cast可以解決你的問題嗎? –