我正在構建STL列表。我做了一個裝飾類(MyList
),它是一個特殊類的列表(ProtectMe
)。我希望列表中的所有項目都是const。因此,這裏是我做了什麼:將const引用強制轉換爲const指針的常量指針
#include <list>
using namespace std;
class ProtectMe{
private:
int data_;
public:
ProtectMe(int data):data_(data){
}
int data() const{return data_;}
};
class MyList{
private:
//A list of constant pointers to constant ProtectMes.
list<const ProtectMe* const> guts_;
public:
void add(const ProtectMe& data){
guts_.push_front(&data);
}
};
我得到以下編譯錯誤:
error: ‘const _Tp* __gnu_cxx::new_allocator::address(const _Tp&) const [with _Tp = const ProtectMe* const]’ cannot be overloaded
我還在抓我的頭試圖解碼哪裏出了問題。爲什麼不編譯這個代碼?我應該改變什麼?
'guts_.push_front(const &data);'爲什麼關鍵字常量在括號中?爲什麼你希望列表元素是指針類型? – Mahesh 2012-07-06 20:04:50
@Mahesh:沒有什麼好的理由,只是想讓它編譯,顯然沒有幫助。我會刪除它... – User1 2012-07-06 20:06:17
爲什麼不只是列表你是否從其他地方派生ProtectMe? –
mathematician1975
2012-07-06 20:12:23