C ++:在初始化列表中传递const * p

时间:2016-03-03 17:58:43

标签: c++ const initialization-list

我想要做的是在我的成员初始化程序中传递一个const ListeBase<int> *pListe,就像我的.cxx中的内容一样,但它给了我一个错误,说它无法从'const'转换为{{1 }}

我知道我可以在不使用'not const'的情况下传递它,但是我被告知在变量之前放置const是一个很好的习惯,你不会改变... 那么,我无法在我的成员初始化程序中传递'const'这一事实背后的原因是什么? :P

·H

const

.CXX

#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;
};

错误讯息:

#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) {};
                                                                                                     ^

2 个答案:

答案 0 :(得分:0)

您正在为非const指针变量分配一个const指针,这可能无法解决。您应该将您的成员声明为

const ListeBase<int> *pListe;

答案 1 :(得分:0)

const type *是一个指向const对象的指针。 您收到一个指向const对象的指针,并尝试使用指向常规对象的指针,这就是编译器禁止的。

我建议你在这里阅读帖子 - http://stackoverflow.com/questions/1143262/what-is-the-difference-between-const-int-const-int-const-and-int-const

祝你好运!