我想做的是传递一个 const ListeBase<int> *pListe
在我的成员初始值设定项中,就像我的 .cxx 中的一样,但它给我一个错误,说它无法从 '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 ListeBase<int> *pListe;
关于C++ : passing a const *p in initialization list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779568/