Что бы я хотел сделать, это передать const ListeBase<int> *pListe
в моем членском инициализаторе, как то, что находится в моем .cxx, но он дает мне ошибку, говоря, что он не может конвертировать из 'const'
в 'not const'
C++: передача const * p в список инициализации
Я знаю, что могу передать его без использования 'const'
, но мне сказали, что это хорошая привычка размещать const до переменной, которую вы не собираетесь менять ... Итак, в чем причина того факта, что я не может передать const
в мой член инициализатор? : P
.Н
#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 ListeBase * pListeSai' является (изменяемые) указатель на константные ListBase , против' ListeBase * pListe; ': а (изменяемые) указатель (изменяемые) ListBase . –
melak47
Никогда не слышал о изменяемых указателях, я сделаю некоторые исследования об этом: P –
Я просто использовал mutable здесь, чтобы обозначить отсутствие const. – melak47