[英]C++ : passing a const *p in initialization list
我想做的是像我的.cxx一樣在成員初始化器中傳遞const ListeBase<int> *pListe
,但這給我一個錯誤,提示它無法從'const'
轉換為'not const'
我知道我可以不使用'const'
來傳遞它,但是有人告訴我,將const放在不更改變量之前是個好習慣...那么,為什么我不能這樣做是什么原因呢?在我的成員初始值設定項中傳遞const
? :P
。H
#include "DataSource.h"
#include "ListeBase.h"
class DataSourceSerieDiscrete : public DataSource
{
private :
ListeBase<int> *pListe;
public :
//CONSTRUCTORS
DataSourceSerieDiscrete();
DataSourceSerieDiscrete(const ListeBase<int> *pListeSai);
DataSourceSerieDiscrete(const DataSourceSerieDiscrete &DSSDSai);
//SETTERS
void setPListe(const ListeBase<int> *pListeSai);
//GETTERS
const ListeBase<int> *getPListe() const;
};
.CXX
#include "DataSourceSerieDiscrete.h"
DataSourceSerieDiscrete::DataSourceSerieDiscrete() : pListe(NULL) {};
DataSourceSerieDiscrete::DataSourceSerieDiscrete(const ListeBase<int> *pListeSai) : pListe(pListeSai) {};
DataSourceSerieDiscrete::DataSourceSerieDiscrete(const DataSourceSerieDiscrete &DSSDSai) : pListe(DSSDSai.getPListe()) {};
//SETTERS
void DataSourceSerieDiscrete::setPListe(const ListeBase<int> *pListeSai)
{
pListe = pListeSai;
}
const ListeBase * DataSourceSerieDiscrete<type>::getPListe() const
{
return pListe;
}
錯誤信息 :
g++ DataSourceSerieDiscrete.cxx -c
DataSourceSerieDiscrete.cxx: In constructor ‘DataSourceSerieDiscrete::DataSourceSerieDiscrete(const ListeBase<int>*)’:
DataSourceSerieDiscrete.cxx:4:101: error: invalid conversion from ‘const ListeBase<int>*’ to ‘ListeBase<int>*’ [-fpermissive]
DataSourceSerieDiscrete::DataSourceSerieDiscrete(const ListeBase<int> *pListeSai) : pListe(pListeSai) {};
^
復制構造函數中的相同錯誤
DataSourceSerieDiscrete.cxx: In copy constructor ‘DataSourceSerieDiscrete::DataSourceSerieDiscrete(const DataSourceSerieDiscrete&)’:
DataSourceSerieDiscrete.cxx:5:117: error: invalid conversion from ‘const ListeBase<int>*’ to ‘ListeBase<int>*’ [-fpermissive]
DataSourceSerieDiscrete::DataSourceSerieDiscrete(const DataSourceSerieDiscrete &DSSDSai) : pListe(DSSDSai.getPListe()) {};
^
您正在將const指針分配給非const指針變量,但這無法解決。 您應該聲明您的會員為
const ListeBase<int> *pListe;
const type *是指向const對象的指針。 您會收到一個指向const對象的指針,並嘗試使用它作為一個指向常規對象的指針,這就是編譯器所禁止的。
我建議您在這里閱讀主題-http: http://stackoverflow.com/questions/1143262/what-is-the-difference-between-const-int-const-int-const-and-int-const
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.