簡體   English   中英

C ++:在初始化列表中傳遞const * p

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM